我想用Greasemonkey在页面加载时更改javascript变量。
我想要更改的变量是iDisplayLength
默认值是25,我想在页面加载时将其更改为-1。
这是我试过的剧本;它不起作用:
function changeTheDefaultViewVarLol() {
location.href = "javascript:void(windows.iDisplayLength = -1)";
};
changeTheDefaultViewVarLol();
编辑:从下面的评论中,目标网页为tf2spreadsheet.blogspot.com。
OP实际上是在尝试更改页面上显示的行数 - 这是一个由“显示{x}条目”<select>
下拉列表触发的函数。
答案 0 :(得分:1)
您只需使用:
unsafeWindow.iDisplayLength = -1;
不需要任何changeTheDefaultViewVarLol()
内容。
然而,如果页面将页面设置为25后页面使用iDisplayLength
,则不会产生您想要的效果。
您可能需要调用JS函数来应用新值。如果是这种情况,请链接到目标页面。
您实际要做的是调用该页面的“显示所有条目”功能。
所以,不要考虑在调用JS变量方面,考虑激活JS与<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 AJAX - 在页面“加载”后很长时间内位于所需的表格中。因此,需要额外的步骤,如下:
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);
}
}