2017-01-13 66 views
-2

我試圖改變一個js函數(在HTML中)或在使用(從站點的其他部分)時添加一個事件監聽器。用Greasemonkey在HTML中添加事件監聽器或替換腳本

即使當我設置爲「」我仍然可以訪問該函數,通過更改innerHTML替換js對象將不起作用。 Eventlistener似乎也不能與這些工作。

有什麼方法可以改變它嗎?

劇本我想改變:

<head><title></title> 
<script language="JavaScript"> 
    function add(message) { 
      alert(message); 
    } 
</script></head> 

編輯:改劇本

+0

源代碼的位置在哪裏? *「(在HTML中)」*什麼HTML?你沒有顯示任何源代碼,所以沒有任何工作/調試.... – NewToJS

+0

現在你已經添加了一些源代碼..你想要改變這個功能?其他相關要素在哪裏?什麼是觸發/調用該功能?什麼是'message,scrolltag'和'container'元素在哪裏... – NewToJS

+0

@NewToJS只是改變了腳本真的無所謂當我可以訪問它的函數 – basicn00b

回答

0

你可以包裝和重新定義原始函數名。例如,要影響您在上面發佈的代碼,您會執行類似的操作:

var _add = add; 
add = function(){ 
    // do other stuff 
    _add(); 
} 
+1

這是工作時,我我正在使用控制檯的添加功能,但當網站本身打開功能 – basicn00b

+0

時,它不工作嗎greasemonkey可以訪問主機頁面的頁面上下文嗎? AFAIK,擴展有一個獨立的「窗口」對象從主機頁面,需要通過不同的var訪問,如http://stackoverflow.com/questions/2303147/injecting-js-functions-into-the-page-from- a-greasemonkey-script-on-chrome –

+0

它正在工作,現在正在添加「// @ run-at document-start」謝謝! – basicn00b

相關問題