2013-10-03 52 views
-1

我試圖找出一個用一個ondblclick替換一個站點上每一個onmousedown的greasemonkey腳本。我希望它不斷更新,就像每1.5秒一樣,因爲頁面使用AJAX刷新。Greasemonkey,每秒更換一次字符串

這是我想出的腳本,但它似乎並沒有工作。

window.setInterval(document.body.innerHTML= document.body.innerHTML.replace('onmousedown','ondblclick');,1500); 

它應該使用的頁面僅限內部使用。但是一個很好的例子就是谷歌搜索,其中onmousedown用於結果鏈接,在點擊它之前將網址換出。

我也嘗試過在document.body.innerHTML.replace之後沒有分號。

我對JavaScript真的很陌生,但由於我是公司中唯一可以編碼的人,所以這個人就跟我在一起。

任何幫助,將不勝感激。

此外,一個小的「側面問題」 我必須使用@exclude,還是僅僅使用@include internal.companysite.tld *,因此它只能在這個網站上工作?

回答

-1

一個直接的答案:你需要提供一個函數給setInterval - 最好設置一個變量,以便稍後可以用clearInterval()來取消它,如果有必要的話。

function myF(){document.body....;} 
var myIntv = setInterval(myF, 1500); 

你也可以做到使用它的匿名函數在一行中,你正在試圖做...做的是這樣的:

var myIntv = setInterval(function(){document.body....;}, 1500); 

我不建議這樣的解決方案到你的問題。它聽起來像你想要做的是操縱活動DOM - 並不真正改變用戶界面。你可能需要的東西是這樣的:

var objs = document.getElementsBy__(); // ById/ByName/etc - depends on which ones you want 
for (var i in objs){objs[i].ondblclick = objs[i].onmousedown;objs[i].onmousedown = undefined;} // just an example - but this should convey the basic idea 

更妙的是,如果你可以使用jQuery,那麼你就可以在一個更易於管理的方式更容易地選擇合適的節點和操縱的事件處理程序:

$(".class.for.example").each(function(){this.ondblclick = this.onmousedown;this.onmousedown = undefined;}); // just an example - there are multiple ways to set and clear these 
+0

最好問個別單獨的小問題 – zCoder

+0

謝謝,我會回頭看看它,一旦我回來工作,這將是星期一。 也感謝您對單獨問題的建議! –