第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從Chrome上的Greasemonkey腳本向頁面中注入JS函數(shù)

從Chrome上的Greasemonkey腳本向頁面中注入JS函數(shù)

SMILET 2019-12-25 14:06:40
我有一個(gè)Greasemonkey腳本,可以在Firefox和Opera中正常工作。但是,我很難使其在Chrome中工作。問題是將一個(gè)函數(shù)注入頁面,該函數(shù)可以由頁面中的代碼調(diào)用。到目前為止,這是我正在做的事情:首先,我獲得了針對(duì)Firefox 的unsafeWindow的輔助參考。這使我可以為FF和Opera(和Chrome,我認(rèn)為)具有相同的代碼。var uw = (this.unsafeWindow) ? this.unsafeWindow : window;接下來,我將一個(gè)函數(shù)注入頁面。實(shí)際上,它只是一個(gè)非常薄的包裝程序,除了在我的GM腳本的上下文中調(diào)用相應(yīng)的功能外,什么也不做:uw.setConfigOption = function(newValue) {    setTimeout(setConfigOption, 0, newValue);}然后,在我的腳本中有相應(yīng)的功能:setConfigOption = function(newValue) {    // do something with it, e.g. store in localStorage}最后,我將一些HTML注入到頁面中,并帶有一個(gè)調(diào)用該函數(shù)的鏈接。var p = document.createElement('p');p.innerHTML = '<a href="javascript:setConfigOption(1)">set config option to 1</a>';document.getElementById('injection-point').appendChild(p);總結(jié)一下:在Firefox中,當(dāng)用戶單擊該注入的鏈接時(shí),它將在unsafeWindow上執(zhí)行函數(shù)調(diào)用,然后觸發(fā)超時(shí),該超時(shí)將在我的GM腳本的上下文中調(diào)用相應(yīng)的函數(shù),然后進(jìn)行實(shí)際處理。(如果我錯(cuò)了,請(qǐng)糾正我。)在Chrome中,我僅收到“ Uncaught ReferenceError:未定義setConfigOption”錯(cuò)誤。實(shí)際上,在控制臺(tái)中輸入“ window.setConfigOption”會(huì)產(chǎn)生“未定義”。在Firebug和Opera開發(fā)者控制臺(tái)中,該功能就在那里。也許還有另一種方法,但是我的一些函數(shù)是由頁面上的Flash對(duì)象調(diào)用的,我認(rèn)為這使我有必要在頁面上下文中使用函數(shù)。我快速瀏覽了Greasemonkey Wiki上unsafeWindow的替代方案,但它們看上去都很難看。我是在這里完全走錯(cuò)了路還是應(yīng)該更仔細(xì)地研究這些?解決方案:我關(guān)注了MaxS。建議,并且現(xiàn)在可以在Firefox和Chrome中使用。因?yàn)槲倚枰╉撁媸褂玫暮瘮?shù)必須調(diào)回常規(guī)函數(shù),所以我將整個(gè)腳本移至了頁面,即,該腳本已完全包裝到他稱為“ main()”的函數(shù)中。為了使該hack的額外丑陋更容易忍受,我現(xiàn)在至少可以放棄使用unsafeWindow和wrappedJSObject。我仍然沒有設(shè)法使Greasemonkey Wiki 的內(nèi)容范圍運(yùn)行器生效。它應(yīng)該做同樣的事情,看起來似乎執(zhí)行得很好,但是<a>例如,頁面中的元素永遠(yuǎn)無法訪問我的函數(shù)。我還沒有弄清楚為什么會(huì)這樣。
查看完整描述

3 回答

?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

我有這個(gè) :


contentscript.js:


function injectJs(link) {

var scr = document.createElement('script');

scr.type="text/javascript";

scr.src=link;

document.getElementsByTagName('head')[0].appendChild(scr)

//document.body.appendChild(scr);

}


injectJs(chrome.extension.getURL('injected.js'));

injection.js:


function main() {

     alert('Hello World!');

}


main();


查看完整回答
反對(duì) 回復(fù) 2019-12-25
  • 3 回答
  • 0 關(guān)注
  • 953 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)