1. การวิเคราะห์รหัสโฆษณา
ระบบโฆษณาของบุคคลที่สามจำนวนมากใช้เอกสารเขียนเพื่อโหลดโฆษณาเช่นลิงค์โฆษณา JavaScript ต่อไปนี้
การคัดลอกรหัสมีดังนี้:
<script type = "text/javascript" src = "http://gg.5173.com/adpolestar/5173/
; ap = 2ebe5681_1ba3_4663_fa3f_e73d2b83fbdc; ct = js; pu = 5173;/? "> </script>
คำขอ JavaScript นี้ส่งคืนชิ้นส่วนของรหัสเช่นนี้:
การคัดลอกรหัสมีดังนี้:
document.write ("<a href = 'http: //gg.5173.com/adpolestar/wayl/;" +
"AD = 6FF3F844_33E6_86EE_3B96_D94C1CF1AEC4; AP = 2EBE5681_1BA3_4663_FA3F_E73D2B83FBDC;" -
"pu = 5173;/? http: //www.7bao.com/g/xlsbz/index 'target =' _ blank '> <img src ='" +
"http://html.5173cdn.com/market/yunyinga/xly132.gif '" +
"border = '0' /> </a>");
วิธีการโหลดแบบนี้ที่ดูเหมือนเล็กน้อย 2 แต่คุณไม่สามารถแก้ไขได้เพราะเป็นบุคคลที่สาม นอกจากนี้รหัสได้เพิ่มฟังก์ชั่นสถิติ ลิงค์โฆษณา JavaScript ด้านบนจะถูกนับทุกครั้งที่มีการร้องขอ รหัสที่สร้างขึ้นยังมีฟังก์ชั่นของสถิติการคลิกซึ่งหมายความว่าจะต้องโหลดด้วยวิธีนี้
Document.write ถูกซิงโครไนซ์ระหว่างการแสดงผลหน้า คุณต้องรอจนกว่าจะดาวน์โหลดรหัส JavaScript และ Document.write จะถูกดำเนินการก่อนที่จะแสดงเนื้อหาต่อไปนี้ หากมีโฆษณาจำนวนมากมันจะทำให้หน้าเว็บบล็อกโดยเฉพาะอย่างยิ่งหากมีการแทรกโฆษณาหลายรายการที่มีขนาดภาพขนาดใหญ่ขึ้นบนหน้าจอแรกของหน้า สถานการณ์การปิดกั้นจะค่อนข้างชัดเจนและจริงจังซึ่งจะทำให้ผู้ใช้รู้สึกว่าหน้าเว็บของคุณช้ามาก
2. เขียนเอกสารใหม่เขียน
เพื่อหลีกเลี่ยงการอุดตันวิธีการเขียนไม่สามารถดำเนินการในระหว่างการแสดงผลหน้า คุณต้องหาวิธีที่จะทำให้รหัสโฆษณา JavaScript ดำเนินการหลังจากทรี DOM พร้อมแล้ว อย่างไรก็ตามหลังจากต้นไม้ DOM พร้อมแล้วทั้งหน้าจะได้รับการแสดงผลอีกครั้งซึ่งเป็นไปไม่ได้ แม้ว่า document.write เป็นวิธีการของเบราว์เซอร์ แต่คุณยังสามารถปรับแต่งวิธีการเขียนทับวิธีดั้งเดิม ก่อนที่จะโหลดรหัสโฆษณา JavaScript ให้เขียนเอกสารใหม่เขียนรอจนกว่าจะโหลดและดำเนินการก่อนที่จะเปลี่ยนกลับ
3. การหน่วงเวลาการโหลดรหัส JavaScript
ขั้นตอนสำคัญด้านบนคือการหน่วงเวลาการโหลดรหัส JavaScript จะใช้งานได้อย่างไร? ก่อนอื่นลองเขียนแอตทริบิวต์ประเภทของสคริปต์ใหม่เช่นการตั้งค่าประเภทเป็นคุณสมบัติที่กำหนดเอง "ประเภท/แคช" แต่ด้วยวิธีนี้เบราว์เซอร์ส่วนใหญ่ (Chrome จะไม่ดาวน์โหลด) จะยังคงดาวน์โหลดรหัสนี้ แต่จะไม่ดำเนินการ การดาวน์โหลดชิ้นส่วนของรหัสระหว่างการเรนเดอร์หน้าจะยังคงบล็อกอยู่ การเขียนประเภทของสคริปต์ใหม่ไม่สามารถโหลดล่าช้าได้จริง อย่างมากมันสามารถโหลดได้ แต่ไม่ดำเนินการเท่านั้นและมีปัญหาความเข้ากันได้
ใส่แท็กสคริปต์ลงในแท็ก textarea และอ่านเนื้อหา textarea เมื่อต้องโหลด ด้วยวิธีนี้คุณสามารถตระหนักถึงการโหลดสคริปต์ที่ล่าช้าจริง วิธีนี้ต้องขอบคุณการแก้ปัญหา Bigrender (นอกกำแพงของ Yu Bo
การคัดลอกรหัสมีดังนี้:
<div>
<textarea style = "display: none">
<script type = "text/javascript" src = "http://gg.5173.com/adpolestar/5173/
; ap = 2ebe5681_1ba3_4663_fa3f_e73d2b83fbdc; ct = js; pu = 5173;/? "> </script>
</textarea>
</div>
หน่วงเวลาการโหลดสคริปต์และเขียนเอกสารใหม่เขียน ต่อไปนี้คือการใช้รหัส:
การคัดลอกรหัสมีดังนี้:
-
* เขียนเอกสารใหม่เขียนเพื่อใช้สคริปต์การโหลดที่ไม่ปิดกั้น
* @param {dom object} องค์ประกอบ textarea
-
var loadscript = function (elem) {
var url = elem.value.match (/src = "([/s/s]*?)"/i) [1]
parent = elem.parentNode
// cache native document.write
docWrite = document.write
// สร้างสคริปต์ใหม่เพื่อโหลด
script = document.createElement ('script')
head = document.head ||
document.getElementByTagname ('head') [0] ||
Document.DocumentElement;
// rewrite document.write
document.write = function (text) {
parent.innerhtml = ข้อความ;
-
script.type = 'text/javascript';
script.src = url;
script.onerror =
script.onload =
script.onreadyStateChange = function (e) {
E = E || window.event;
if (! script.readystate ||
/loaDEDEDECOMPLETE/.test(Script.readyState) ||
e === 'ข้อผิดพลาด'
-
// กู้คืนเอกสารดั้งเดิมเขียน
document.write = docWrite;
head.removeChild (สคริปต์);
// ถอนการติดตั้งเหตุการณ์และตัดการอ้างอิง DOM
// พยายามหลีกเลี่ยงการรั่วไหลของหน่วยความจำ
หัว =
ผู้ปกครอง =
elem =
สคริปต์ =
script.onerror =
script.onload =
script.onreadystatechange = null;
-
-
// โหลดสคริปต์
head.insertbefore (สคริปต์, head.firstchild);
-
4. การโหลดล่าช้าของรูปภาพเวอร์ชัน
มันจะได้รับการปรับให้เหมาะสมต่อไปโดยการใช้การโหลดขี้เกียจที่ไม่ถูกปิดกั้นของรหัสโฆษณา JavaScript หรือไม่? หากโฆษณาไม่ปรากฏบนหน้าจอแรกสามารถใช้เพื่อชะลอการโหลดเช่นการโหลดความล่าช้าตามปกติของภาพได้หรือไม่? คำตอบคือใช่ ฉันขยายปลั๊กอินการโหลดขี้เกียจสำหรับรูปภาพที่ฉันเขียนไว้ก่อนหน้านี้และเปลี่ยนวิธีการโหลดภาพต้นฉบับ (แทนที่ SRC) เป็นวิธีการโหลดข้อความด้านบนเพื่อให้ได้ แน่นอนการปรับเปลี่ยนเช่นนี้จะยังคงเป็นปัญหา หากมีรูปภาพและโหลดหลายภาพพร้อมกันและ document.write เป็นวิธีการทั่วโลกจะไม่รับประกันว่าจะไม่ส่งผลกระทบ B เมื่อโหลด A. พวกเขาจะต้องโหลดทีละตัวเพื่อให้สามารถโหลด B ได้หลังจากโหลด A.
V. การควบคุมคิว
เพื่อให้รหัสโฆษณา JavaScript โหลดตามลำดับจำเป็นต้องมีคิวเพื่อควบคุมการโหลด ดังนั้นรหัสควบคุมคิวแบบง่ายต่อไปนี้จึงพร้อมใช้งาน:
การคัดลอกรหัสมีดังนี้:
var loadqueue = [];
// เข้าร่วมรายการ
var queue = function (data) {
loadqueue.push (ข้อมูล);
if (loadqueue [0]! == 'runing') {
dequeue ();
-
-
// เพิกถอน
var dequeue = function () {
var fn = loadqueue.shift ();
if (fn === 'runing') {
fn = loadqueue.shift ();
-
ถ้า (fn) {
loadqueue.unshift ('runing');
fn ();
-
-
โปรดดูบทความเปรียบเทียบสำหรับตัวโหลดล่าช้ารูปภาพ: http://www.vevb.com/article/50685.htm