我有一个 Greasemonkey 功能,可以在我的浏览器访问的每个网站上创建一个按钮。
我想防止在访问网站的主窗口的所有子窗口中发生这种情况。(现在该按钮显示在诸如adsense窗口或论坛中的输入文本区域之类的子窗口上,当我在一个网站上时可以多次看到它)。
如何将此功能限制在网站的主窗口中?
我有一个 Greasemonkey 功能,可以在我的浏览器访问的每个网站上创建一个按钮。
我想防止在访问网站的主窗口的所有子窗口中发生这种情况。(现在该按钮显示在诸如adsense窗口或论坛中的输入文本区域之类的子窗口上,当我在一个网站上时可以多次看到它)。
如何将此功能限制在网站的主窗口中?
那些“子窗口”是<iframe>
s。
查看类似问题:
Greasemonkey 将在 iframe 上运行,就像它们是主页一样 - 如果 iframe 与脚本的@include
、@exclude
和@match
指令匹配。
要解决子窗口/iframe 问题:
调整您的@include
、@exclude
rules和/或您的@match
指令,以尽可能多地消除不需要的 iframe。
尽量避免在每个页面上运行脚本。
如果只需要顶窗操作,请使用该@noframes
指令。
要在函数级别进行控制,而不是整个脚本,您可以使用如下代码:
if (window.top === window.self) {
// CODE TO RUN ON MAIN PAGE
}
else {
// CODE TO RUN IN IFRAME
}