使用 Greasemonkey 更改变量或激活 JS 链接<select>的下拉列表



我希望用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()的东西。

但是,如果在页面将其设置为 25 之后,页面立即使用 iDisplayLength,则这不会产生您想要的效果。

您可能需要调用 JS 函数才能应用新值。 如果是这种情况,则链接到目标页面。



更新其他页面信息:

您实际尝试做的是调用该页面的"显示所有条目"功能。

所以,不要从戳JS变量的角度来考虑,而要从激活与该<select>相关的JS的角度来考虑。

对于类似于您指定的页面的普通页面,这样的代码可以做到这一点:

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);
}


但是,该页面在页面"加载"很久之后很久才在所需的表中使用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);
    }
}

最新更新