javascript - 如果我更改页面,tampermonkey 脚本将停止工作

标签 javascript html greasemonkey tampermonkey

我正在使用 Tampermonkey 来节省执行频繁任务的时间。目标是获取 www.example1.com 上元素的内容,导航到另一个页面,并在那里做一些事情。从 match 中可以看出,起始页是 www.example1.com。这是我正在使用的代码:

//@match  http://example1.com

var item = document.getElementById("myId").textContent;

window.open("http://example2.com","_self");

setTimeOut(function(
//perform clicks on this page
){},3000);

更改 URL 后的代码都不会执行。为什么,解决方法是什么?

最佳答案

允许两个 url 上的用户脚本并使用 GM_setValue/GM_getValue 组织通信。

//@match   http://example1.com
//@match   http://example2.com
//@grant   GM_getValue
//@grant   GM_setValue

if (location.href.indexOf('http://example1.com') == 0) {
    GM_setValue('id', Date.now() + '\n' + document.getElementById("myId").textContent);
    window.open("http://example2.com","_self");
} else if (location.href.indexOf('http://example2.com') == 0) {
    var ID = GM_getValue('id', '');
    if (ID && Date.now() - ID.split('\n')[0] < 10*1000) {
        ID = ID.split('\n')[1];
        .............. use the ID
    }
}
  • 这是一个简化的例子。在实际代码中,您可能希望使用 location.hostlocation.origin 或将 location.href 与正则表达式匹配,具体取决于实际网址是。
  • 要传递复杂对象,请将它们序列化:

    GM_setValue('test', JSON.stringify({a:1, b:2, c:"test"}));
    

    try { var obj = JSON.parse(GM_getValue('test')); }
    catch(e) { console.error(e) }
    

关于javascript - 如果我更改页面,tampermonkey 脚本将停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33507215/

相关文章:

javascript - 如何在网页中的 Flash 小程序上模拟假的 MouseOver?

javascript - 已弃用的 Javascript RegExp 属性的替代方案

javascript - 在 JS 中文档加载之前调用函数

javascript - 用JavaScript过滤垃圾邮件的最佳方法是什么?

javascript - Div 1 :1 ratio with image inside,,视口(viewport)最大高度,无滚动条

html - 如何修复从上一节开始的节?

javascript - 我无法让 JavaScript 事件监听器正常工作

javascript - 如何将一个对象从一个对象发送到另一个对象?

javascript - 如何简化 VueJS 的这段代码

html - 当导航栏 Logo 被赋予自定义样式时,导航栏的高度会膨胀