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

时间:2015-11-03 19:14:33

标签: 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后的所有代码都不会被执行。为什么,以及解决方法是什么?

1 个答案:

答案 0 :(得分:3)

在两个网址上设置用户说明并使用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与regexp匹配,具体取决于真实网址。
  • 传递复杂对象序列化它们:

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

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