จำเป็นต้องลบค่า href เมื่อพิมพ์ใน Chrome


290

ฉันกำลังพยายามปรับแต่ง CSS การพิมพ์และพบว่ามันพิมพ์ลิงก์ออกมาพร้อมกับhrefค่าเช่นเดียวกับลิงค์

นี่คือใน Chrome

สำหรับ HTML นี้:

<a href="http://www.google.com">Google</a>

มันพิมพ์:

Google (http://www.google.com)

และฉันต้องการให้พิมพ์:

Google

1
โปรดจำไว้ว่าทำไมกรอบงาน CSS ที่สำคัญ ๆ ทำเช่นนั้นคุณไม่สามารถคลิกบนกระดาษได้! ดังนั้นถ้าคุณกำลังจะปิดใช้งานคุณควรเพิ่มรายชื่อของการเชื่อมโยงที่ด้านล่างเช่นนี้: alistapart.com/article/improvingprint
Julix

1
มันเป็นเรื่องจริง แต่ฉันคิดว่ามันจะดีกว่าถ้ามีการควบคุมเวลาและสถานที่ลิงก์ ตัวอย่างเช่นในลิงก์ของฉันฉันต้องการให้พวกเขาปรากฏในบรรทัดถัดไปหลังจากข้อความและไม่มีวงเล็บ ดังนั้นฉันแค่แสดง URL ในข้อความ
user4052054

คำตอบ:


602

Bootstrap ทำสิ่งเดียวกัน (... ตามคำตอบที่เลือกด้านล่าง)

@media print {
  a[href]:after {
    content: " (" attr(href) ")";
  }
}

เพียงลบออกจากที่นั่นหรือแทนที่ในสไตล์การพิมพ์ของคุณเอง:

@media print {
  a[href]:after {
    content: none !important;
  }
}

17
<style>@media print{a[href]:after{content:none}}</style>โพสต์ส่วนใหญ่สำหรับตัวเองเมื่อฉันกลับมาที่หน้านี้ขอบคุณ
William Entriken

1
เห็นได้ชัดว่ามูลนิธิทำบางสิ่งด้วย
spasticninja

ดูเหมือนว่าHTML5 Boilerplateก็ทำเช่นนี้! ดังนั้นฉันเดาว่าฉันต้องแทนที่มันผ่านการเปลี่ยนรหัสบนเว็บไซต์ของฉันเองและผ่านทางผู้ตรวจสอบในเว็บไซต์อื่น ๆ ...
ADTC

คำเตือน: เราพบปัญหาที่บางครั้งตารางหายไปสองสามแถวสุดท้ายเมื่อพิมพ์ กลับกลายเป็นว่ากฎนี้เป็นผู้ร้ายหรืออย่างน้อยก็เอามันแก้ไขปัญหา ไม่รู้ว่าทำไมมันถึงมีผลกระทบนั้น
Henrik N

1
@HenrikN - ฉันคิดว่ามันเกี่ยวข้องกับ bootstrap คอลัมน์ลอย ใช้float:noneเมื่อจำเป็นแก้ไขปัญหาที่คล้ายกันสำหรับฉันไม่กี่สัปดาห์หลัง; อาจช่วยให้คุณ แต่นั่นเป็นปัญหาที่แตกต่าง
แอนดรู

40

มันไม่ได้ ที่ไหนสักแห่งในสไตล์การพิมพ์ของคุณคุณต้องมีส่วนของรหัสนี้:

a[href]::after {
    content: " (" attr(href) ")"
}

ความเป็นไปได้อื่น ๆ เท่านั้นคือคุณมีส่วนขยายที่ทำเพื่อคุณ


1
ฉันได้รับมันใน CSS พื้นฐาน Zurb
forX


10

หากคุณใช้ CSS ต่อไปนี้

<link href="~/Content/common/bootstrap.css" rel="stylesheet" type="text/css"    />
<link href="~/Content/common/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="~/Content/common/site.css" rel="stylesheet" type="text/css" />

เพียงเปลี่ยนเป็นสไตล์ดังต่อไปนี้โดยเพิ่มmedia = "screen"

<link href="~/Content/common/bootstrap.css" rel="stylesheet" **media="screen"** type="text/css" />
<link href="~/Content/common/bootstrap.min.css" rel="stylesheet" **media="screen"** type="text/css" />
<link href="~/Content/common/site.css" rel="stylesheet" **media="screen"** type="text/css" />

ฉันคิดว่ามันจะทำงาน

คำตอบเดิมเช่น

    @media print {
  a[href]:after {
    content: none !important;
  }
}

ไม่ทำงานได้ดีในการเรียกดูโครเมี่ยม


4

ฉันพบปัญหาที่คล้ายกันเฉพาะกับ img ที่ซ้อนกันในสมอของฉัน:

<a href="some/link">
   <img src="some/src">
</a>

เมื่อฉันสมัคร

@media print {
   a[href]:after {
      content: none !important;
   }
}

ฉันทำ img ของฉันและความกว้างของสมอหายไปด้วยเหตุผลบางอย่างดังนั้นฉันจึงใช้:

@media print {
   a[href]:after {
      visibility: hidden;
   }
}

ซึ่งทำงานได้อย่างสมบูรณ์แบบ

เคล็ดลับโบนัส : ตรวจสอบตัวอย่างก่อนพิมพ์


1

ในการซ่อนหน้า URL

ใช้media="print"ในตัวอย่าง tage สไตล์:

<style type="text/css" media="print">
            @page {
                size: auto;   /* auto is the initial value */
                margin: 0;  /* this affects the margin in the printer settings */
            }
            @page { size: portrait; }
</style>

หากคุณต้องการลบลิงค์:

@media print {
   a[href]:after {
      visibility: hidden !important;
   }
}

-2

สำหรับผู้ใช้ปกติ เปิดหน้าต่างตรวจสอบของหน้าปัจจุบัน และพิมพ์ใน:

l = document.getElementsByTagName("a");
for (var i =0; i<l.length; i++) {
    l[i].href = "";
}

จากนั้นคุณจะไม่เห็นลิงก์ URL ในตัวอย่างก่อนพิมพ์


นี่เป็นทางออกที่ดีหากคุณไม่สามารถควบคุมซอร์สโค้ดของหน้าเว็บที่คุณพยายามพิมพ์ได้
Paddymac
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.