日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一般瀏覽器先加載主頁(yè),再請(qǐng)求關(guān)聯(lián)的js腳本文件。不管你把js代碼嵌入在html中,還是獨(dú)立保存為一個(gè)文件,都必須等待主頁(yè)加載完成,js代碼加載完成后才能執(zhí)行。網(wǎng)上有人說(shuō)把js代碼放在head里面,其實(shí)這樣并不影響腳本執(zhí)行時(shí)機(jī)。因?yàn)閖s或html還沒(méi)有加載,何談執(zhí)行js代碼。先看一下頁(yè)面加載資源的順序

瀏覽器加載頁(yè)面資源順序


再簡(jiǎn)單分析一下onload事件的執(zhí)行時(shí)機(jī)。
Document.onload
它是在結(jié)構(gòu)和樣式加載完才執(zhí)行js。【就是在html和css都完事以后才執(zhí)行】

Window.onload
它不僅僅要在結(jié)構(gòu)和樣式加載完,還要執(zhí)行完所有的樣式、圖片這些資源文件,全部加載完才會(huì)觸發(fā)window.onload事件。

jquery中的ready
指定在DOM完全加載時(shí)要執(zhí)行的函數(shù)。

也許你又會(huì)想到,先執(zhí)行JAVAScript,再打開(kāi)頁(yè)面可以嗎?答案是否定的,因?yàn)閳?zhí)行完JavaScript后,執(zhí)行結(jié)果保存在變量中,當(dāng)打開(kāi)一個(gè)新的頁(yè)面時(shí),js變量會(huì)被清空。

有什么方法在頁(yè)面加載前就執(zhí)行js代碼呢,單從網(wǎng)頁(yè)來(lái)考慮似乎無(wú)解,那就需要從瀏覽器端入手。當(dāng)輸入網(wǎng)址或點(diǎn)擊鏈接導(dǎo)致需要加載另一個(gè)頁(yè)面前就執(zhí)行js代碼(注意只是準(zhǔn)備加載頁(yè)面,還沒(méi)有下載一個(gè)字符)。這樣做可以在頁(yè)面加載前先給某些變量賦值,且這個(gè)變量值在頁(yè)面加載完成后不會(huì)消失。
打開(kāi)木頭瀏覽器的項(xiàng)目管理窗口,創(chuàng)建一個(gè)腳本代碼步驟,并輸入需要執(zhí)行的JavaScript代碼,選擇代碼執(zhí)行時(shí)機(jī)為“頁(yè)面加載前執(zhí)行”,保存這個(gè)項(xiàng)目后,只要執(zhí)行一次這個(gè)項(xiàng)目(點(diǎn)擊測(cè)試也可以),在瀏覽器中打開(kāi)任何網(wǎng)址時(shí),都會(huì)先執(zhí)行這段JavaScript代碼。如下圖所示,為方便體驗(yàn)具體效果,設(shè)置一個(gè)彈窗代碼在頁(yè)面加載前執(zhí)行。

加載頁(yè)面前執(zhí)行腳本


然后在瀏覽器中輸入打開(kāi)一個(gè)網(wǎng)址,此時(shí)頁(yè)面還沒(méi)有加載,就彈出了窗口。由于是模態(tài)彈窗,只有點(diǎn)擊確定后才會(huì)繼續(xù)加載頁(yè)面內(nèi)容。頁(yè)面加載完成后,js變量值亦不會(huì)丟失。

執(zhí)行時(shí)機(jī)測(cè)試


如果需要停止在頁(yè)面加載前執(zhí)行腳本代碼,只需要再添加一個(gè)腳本代碼步驟,代碼為空,設(shè)置執(zhí)行時(shí)機(jī)為“停止加載前執(zhí)行”。當(dāng)此步驟執(zhí)行一次后,在瀏覽器打開(kāi)網(wǎng)頁(yè)就不會(huì)再執(zhí)行腳本代碼彈出窗口了。

停止加載前執(zhí)行腳本


網(wǎng)頁(yè)加載前注入執(zhí)行JavaScript腳本,具體有什么作用呢?可以用于改變系統(tǒng)環(huán)境參數(shù),比如修改屏幕分辨率;執(zhí)行如下代碼后,網(wǎng)頁(yè)獲取分辨率時(shí)將得到預(yù)設(shè)值而非實(shí)際分辨率。

 

  1. screen.width = 1024;
  2. screen.height = 768;
  3. screen.availWidth = 1024;
  4. screen.availHeight =768;
  5. screen.availablewidth =1024;
  6. screen.availableheight =768;

 


還可以修改系統(tǒng)函數(shù),替換函數(shù)功能。比如把下面這段代碼放在頁(yè)面加載前執(zhí)行,改變系統(tǒng)的alert函數(shù)功能,那么此頁(yè)面再執(zhí)行alert就不會(huì)彈出窗口了。

 

  1. window.alert=function(txt){
  2. return txt;
  3.  

 

某些網(wǎng)站通過(guò)JavaScript功能函數(shù)采集“瀏覽器指紋”,同樣可以通過(guò)修改功能函數(shù),避免被網(wǎng)站跟蹤。比如在頁(yè)面加載前執(zhí)行以下代碼,自動(dòng)給canvas畫(huà)布指紋添加變化的噪聲,導(dǎo)致頁(yè)面每次獲取的“瀏覽器指紋”都不一樣。

 

  1. var inject = function () {
  2. const toBlob = HTMLCanvasElement.prototype.toBlob;
  3. const toDataURL = HTMLCanvasElement.prototype.toDataURL;
  4. const getImageData = CanvasRenderingContext2D.prototype.getImageData;
  5.  
  6. var noisify = function (canvas, context) {
  7. if (context) {
  8. const shift = {
  9. 'r': Math.floor(Math.random() * 10) - 5,
  10. 'g': Math.floor(Math.random() * 10) - 5,
  11. 'b': Math.floor(Math.random() * 10) - 5,
  12. 'a': Math.floor(Math.random() * 10) - 5
  13.  
  14.  
  15. const width = canvas.width;
  16. const height = canvas.height;
  17. if (width && height) {
  18. const imageData = getImageData.Apply(context, [0, 0, width, height]);
  19. for (let i = 0; i < height; i++) {
  20. for (let j = 0; j < width; j++) {
  21. const n = ((i * (width * 4)) + (j * 4));
  22. imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
  23. imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
  24. imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
  25. imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
  26.  
  27.  
  28.  
  29. window.top.postMessage("canvas-fingerprint-defender-alert", '*');
  30. context.putImageData(imageData, 0, 0);
  31.  
  32.  
  33.  
  34.  
  35. Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
  36. "value": function () {
  37. noisify(this, this.getContext("2d"));
  38. return toBlob.apply(this, arguments);
  39.  
  40.  
  41.  
  42. Object.defineProperty(HTMLCanvasElement.prototype, "toDataURL", {
  43. "value": function () {
  44. noisify(this, this.getContext("2d"));
  45. return toDataURL.apply(this, arguments);
  46.  
  47.  
  48.  
  49. Object.defineProperty(CanvasRenderingContext2D.prototype, "getImageData", {
  50. "value": function () {
  51. noisify(this.canvas, this);
  52. return getImageData.apply(this, arguments);
  53.  
  54.  
  55.  
  56. document.documentElement.dataset.cbscriptallow = true;
  57.  
  58. inject();

分享到:
標(biāo)簽:腳本 js
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定