我正在尝试编写一个脚本,以便在Google Flights上将地图放大。
我已经在Firefox的暂存器中使用了jQuery。这个脚本完全符合我的目标:
$('div').filter(function(){
return $(this).css('width') == '648px'
}).css({"width":"900px","height":"550px"});
但是当我将其粘贴到Greasemonkey脚本中时,它不起作用。如果我添加一些console.logs来调试,我可以验证脚本是否正在运行并且过滤器是否正常工作,但它没有修改CSS。有什么想法吗?
答案 0 :(得分:3)
有时您需要确保在加载页面后执行脚本
$(function(){
// YOUR CODE HERE
});
您也可以尝试使用setTimeout并输入2sec(2000)
var myfunc = function(){
// YOUR CODE HERE
};
setTimeout(myfunc, 2000);
答案 1 :(得分:0)
AJAX驱动页面添加的内容通常在用户脚本运行后很长时间添加,因此脚本通常不会看到它。
你可以使用一个长的,固定的间隔,如Kursion的回答所示,但这有缺点:
setTimeout
最多只会捕获第一个实例。将丢失后续节点。 更好的方法是使用MutationObserver
或像waitForKeyElements()这样的实用程序。
两者都有优点和缺点,但我发现waitForKeyElements
更简单,更通用。 (披露:我写了。)
以下是完整的用户说明,其中显示了在动态网页上工作的因素代码:
// ==UserScript==
// @name _Fix div CSS on AJAX-driven pages
// @match http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
//- The @grant directive is needed to restore the proper sandbox.
waitForKeyElements ("div", adjustSelectDivdimensions);
function adjustSelectDivdimensions (jNode) {
if (jNode.css('width') == '648px') {
jNode.css( {"width": "900px", "height": "550px"} )
}
}