3

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?

1 Answer 1

5

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 or location.origin or match location.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) } 
Sign up to request clarification or add additional context in comments.

4 Comments

neat approach. I implemented it but I am getting an error: GM_setValue is not defined.
Most likely you forgot to declare it in @require as shown in the answer.
Mind reading abilities you got there:D i did forget to declare it. I added the declaration but I am still getting the error. Is the order of declarations relevant?
Not @require. @grant. Edited answer.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.