-1

我试图找出一个greasemonkey脚本,用ondblclick替换网站上的每个onmousedown。我希望它像每 1.5 秒一样不断更新,因为页面使用 AJAX 刷新。

这是我想出的脚本,但它似乎不起作用。

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

它应该使用的页面仅供内部使用。但是一个很好的例子是 google 搜索,其中 onmousedown 用于结果的链接,以便在单击之前换掉 URL。

我也试过在 document.body.innerHTML.replace 后面不加分号。

我对 JavaScript 真的很陌生,但是由于我是公司中唯一可以编码的人,所以这个人一直困扰着我。

任何帮助,将不胜感激。

另外,一个小的“附带问题”我必须使用@exclude,还是只使用@include internal.companysite.tld*就足够了,所以它只能在这个网站上工作?

4

1 回答 1

-1

一个直接的答案:您需要为 setInterval 提供一个函数 - 最好设置一个变量,以便您以后可以在必要时使用 clearInterval() 取消它。

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

您也可以在尝试做的时候在一行中使用匿名函数......这样做:

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

我不建议将此作为您问题的解决方案。听起来你想做的是操纵活动的 DOM——而不是真正改变 UI。你可能需要这样的东西:

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
于 2013-10-03T22:52:08.533 回答