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

时间:2012-01-21 06:50:03

标签: 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>下拉列表触发的函数。

1 个答案:

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