2017-08-31 194 views
1

下面是完整的Greasemonkey脚本,用于删除在firefox中启用adblocker时弹出或阻止实际Web内容的模型屏幕/页面。但它并没有删除模型屏幕。Greasemonkey脚本不能正常工作

/**

// ==UserScript== 
// @name  test 
// @namespace test 
// @include  * 
// @version  1 
// @grant  none 
// ==/UserScript== 


if (document.getElementsByClassName('tmask')[0]) { 
    document.getElementsByClassName('tmask')[0].style.display = 'none'; 
    document.getElementsByClassName('tbox')[0].style.display = 'none'; 
} 

**/

然而,当模式页弹出,如果我打开 “Web开发者> Web控制台” 并执行这些线路

if (document.getElementsByClassName('tmask')[0]) { 
    document.getElementsByClassName('tmask')[0].style.display = 'none'; 
    document.getElementsByClassName('tbox')[0].style.display = 'none'; 
} 

它的工作原理即它删除了模态网页,并让我阅读网页内容。

任何帮助表示赞赏。让我知道是否需要更多信息。

回答

0
var interval; 

function go() 
{ 
    if (document.getElementsByClassName('tmask')[0]) { 
     document.getElementsByClassName('tmask')[0].style.display = 'none'; 
     document.getElementsByClassName('tbox')[0].style.display = 'none'; 
     clearInterval(interval); 
    } 
} 

window.addEventListener('load', function(event) 
{ 
    if(window.top == window.self) //don't run in frames 
    { 
     interval = setInterval(go, 500); 
    } 
}, false); 

我的猜测是你没有等待页面加载,因此你的脚本在'tmask'实际存在之前运行。

+0

感谢您的快速回复。 我试过它没有工作。类似的情况可以在quora论坛上找到...转到此URL“https://www.quora.com/What-is-the-Landmark-Forum-like-I%E2%80%99ve-heard-it% E2%80%99s-everything-from-a-cult-to-the-transformative-experience-ever“,然后点击任何右侧栏上的URL”相关问题“弹出登录诊断日志。 – user4488573

+0

我没有账号,所以你的链接对我没有任何用处。尝试上面的编辑,如果弹出窗口是在加载后生成的,则会将执行延迟1秒作为测试。您是否确保标签在运行时存在? –

+1

可能要考虑使用_setInterval_来定期检查元素,然后清除元素出现并执行函数时的时间间隔。 –