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

标签 javascript variables drop-down-menu greasemonkey html-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()东西。

但是,如果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/

相关文章:

css - 如何制作这种风格的选择覆盖而不是下推元素

javascript - 检查 javascript 中是否未定义

javascript - 如何在 aframe.js 中使视频静音?

javascript - 如果我在特定的 div 中,如何让 jQuery 启动?

Javascript在循环中的特定数量的字母后添加字母

android - 如何以编程方式仅更改微调器的下拉列表宽度 - android

javascript - 在 Modal asp.net mvc 中使用 ajax 添加数据

c++ - 绕过 cin 语句的未初始化局部变量

javascript - JS : Why isn't this variable available to the other functions?

html - 我有一长串子元素属于同一类别,wordpress