为什么我的代码在Firefox(Greasemonkey)中不能运行,而在Chrome(Tampermonkey)中却不能正常运行?

时间:2019-12-13 10:32:38

标签: google-chrome firefox instagram greasemonkey tampermonkey

我已经使用一些代码自动跟踪了Greasemonkey中Instagram上的某个人,但是当我在Chrome的Tampermonkey中尝试该代码时,我得到一个带有感叹号的符号,表示未定义'filterArrButtons'。

这是代码

window.addEventListener('DOMContentLoaded', function() {
  setInterval(function() {
var btns = document.getElementsByClassName("_5f5mN");
for (var i = 0; i < btns.length; i++) {
  if (btns[i].innerHTML == "Follow") {
    btns[i].click();
  }
}
    for (var x = 0; x <= filterArrButtons.length - 1; x++) {
      var df = filterArrButtons[x].classList;
      df = df.value.split(" ");
      simulateCliks(filterArrButtons[x], "click");
    }
  }, 2000);

});

function simulateCliks(el, evntType) {
  if (el.fireEvent) {
    el.fireEvent('on' + evntType);
  } else {
    var evObj = document.createEvent('Events');
    evObj.initEvent(evntType, true, false);
    el.dispatchEvent(evObj);
  }
}

});

这是我遇到的错误的屏幕截图

enter image description here

我已经尝试寻找所遇到问题的答案,但找不到任何东西。它可以在Firefox的Greasemonkey中使用,但不能在Chrome的Tampermonkey中使用。

1 个答案:

答案 0 :(得分:0)

运行
GreaseMonkey和ViolentMonkey的默认值为'document-end',而Firefox content_scripts的默认运行密码为'document_idle',FireMonkey和TamperMonkey的默认密码也是如此。

GreaseMonkey        document-end
ViolentMonkey       document-end

FireMonkey          document-idle
TamperMonkey        document-idle
TamperMonkey中的

document-idle表示脚本是在'DOMContentLoaded'之后注入的,因此'DOMContentLoaded'将永远不会触发该事件。

完整的脚本未显示,因此不清楚是否设置run-at或将其保留为默认值。