亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

3 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

我有這個 :


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();


查看完整回答
反對 回復 2019-12-25
  • 3 回答
  • 0 關注
  • 957 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號