我希望使用 Greasemonkey 在页面加载时更改 javascript 变量。
我要更改的变量是 iDisplayLength
默认值为 25,我想在页面加载时将其更改为 -1。
这是我试过的脚本;它没有工作:
function changeTheDefaultViewVarLol() {
location.href = "javascript:void(windows.iDisplayLength = -1)";
};
changeTheDefaultViewVarLol();
编辑:从下面的评论中,目标页面是 tf2spreadsheet.blogspot.com .
OP 实际上试图更改页面上显示的行数——一个由“显示 {x} 条目”触发的函数 <select>
下拉菜单。
最佳答案
您只需使用:
unsafeWindow.iDisplayLength = -1;
不需要任何一个changeTheDefaultViewVarLol()
东西。
但是,如果iDisplayLength
,这将不会产生您想要的效果。在页面将其设置为 25 后立即被页面使用。
您可能必须调用 JS 函数来应用新值。如果是这种情况,请链接到目标页面。
更新附加页面信息:
您实际要做的是调用该页面的“显示所有条目”功能。
所以,不要从戳 JS 变量的 Angular 来思考,而是从激活与它相关的任何 JS 的 Angular 来思考 <select>
.
对于类似于 the one you specified 的普通 页面,像这样的代码会这样做:
var showAllOpt = document.querySelector ('#main_table_length select option[value="-1"]');
var changeEvent = document.createEvent ("HTMLEvents");
if (showAllOpt) {
showAllOpt.parentNode.selectedIndex = showAllOpt.index;
changeEvent.initEvent ("change", true, true);
showAllOpt.parentNode.dispatchEvent (changeEvent);
}
但是, that page AJAXes-在页面“加载”后很久就在所需的表中。因此,需要一个额外的步骤,如下所示:
var showAllEntriesSelect = setInterval ( function() {
setSelectValueWhenitLoads (
"#main_table_length select option",
"-1",
showAllEntriesSelect
);
}
, 200
);
function setSelectValueWhenitLoads (cssSelector, targetValue, timerVar) {
var showAllOpt = document.querySelector (
cssSelector + '[value="' + targetValue + '"]'
);
if (showAllOpt) {
clearInterval (timerVar);
showAllOpt.parentNode.selectedIndex = showAllOpt.index;
var changeEvent = document.createEvent ("HTMLEvents");
changeEvent.initEvent ("change", true, true);
showAllOpt.parentNode.dispatchEvent (changeEvent);
}
}
关于javascript - 使用 Greasemonkey 更改变量或激活 JS 链接的 <select> 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951264/