gpt4 book ai didi

javascript - 尝试修改 HTMLTableRowElement.prototype

转载 作者:行者123 更新时间:2023-11-28 01:21:45 25 4
gpt4 key购买 nike

我有两种方法,在几个页面中运行良好,但是当涉及 Greasemonkey 脚本时,它们由于某种原因失败,抛出“不是函数”错误。
完全相同的代码虽然通常附加到页面,但可以完美运行。

HTMLTableRowElement.prototype.hideRow = function(){this.style.display = 'none'};
HTMLTableRowElement.prototype.showRow = function(){this.style.display = ''};

调用这些函数之一时出现错误。有什么线索吗?

最佳答案

该代码无法在 Greasemonkey 脚本中运行,因为 GM 脚本位于不同的范围内并且(名义上)位于沙箱中。请参阅"Why is window (and unsafeWindow) not the same from a userscript as from a script tag"了解更多信息和解决方法(@grant none(可能),或脚本注入(inject),或 unsafeWindow)。

但是,除非您尝试更改页面添加的现有代码,否则不要这样做。

使用 jQuery 的 .hide().show().toggle()


或者使用GM_addStyle()创建一个类,EG:

GM_addStyle (".GM_hide {display: none !important;}");


并使用 DOM 函数根据需要添加或删除类。例如:

//--- Select the 2nd row of the first table
var someRow = document.querySelector ("table tr:nth-of-type(2)");

someRow.classList.add ("GM_hide");
someRow.classList.remove ("GM_hide");
someRow.classList.toggle ("GM_hide");

关于javascript - 尝试修改 HTMLTableRowElement.prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com