I am using Tampermonkey to save time on frequent tasks. The goal is to get content of an element on www.example1.com, navigate to another page, and do stuff there. The starting page is www.example1.com as seen from match
. This is the code I am using:
//@match http://example1.com
var item = document.getElementById("myId").textContent;
window.open("http://example2.com","_self");
setTimeOut(function(
//perform clicks on this page
){},3000);
None of the code after changing URLs ever gets executed. Why, and what is the workaround?
wOxxOm
Allow the userscript on both urls and use GM_setValue
/GM_getValue
to organize the communication.
//@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
}
}
- This is a simplified example. In the real code you may want to use
location.host
orlocation.origin
or matchlocation.href
with regexp depending on what the real urls are. To pass complex objects serialize them:
GM_setValue('test', JSON.stringify({a:1, b:2, c:"test"}));
try { var obj = JSON.parse(GM_getValue('test')); } catch(e) { console.error(e) }
来源:https://stackoverflow.com/questions/33507215/tampermonkey-script-stops-working-if-i-change-the-page