views:

251

answers:

2

Hi, I'm using greasemonkey to inject a script into every page that loads in my browser. The problem that i'm facing now is that, if the browser moves from one page to another within the same domain, greasemonkey doesn't inject my script again. For example, I'm at google.com, so when my browser loads this page, my script is injected. Now, say i type some search string and click on search. The browser takes me to another page with the primary url as google.com . Here, my script isn't injected.

How do i solve such an issue.

Any help/comments would be appreciated.

+1  A: 

You could set @include * if you want your greasemonkey script load on everypage

// @include        *
S.Mark
Yes, my script has just one @include and it just says a "*" .
kambamsu
+3  A: 

click on search. The browser takes me to another page

Actually it doesn't. In the new Google interface, what it has actually done is to remain on the existing page, but replace the search form with a list of search results, fetched via XMLHttpRequest. It then changes the #fragmentIdentifier part of the URL to store the search information so that you can still navigate and bookmark the URL as if the search results were a different page.

Here, my script isn't injected

No, but your script is still present, from when it was loaded at the search form.

If you need your script to detect that the #hash part of the URL has changed, representing an internal navigation, there is the HTML5 onhashchange event. However it is only supported in Firefox 3.6 (and a few other browsers), so for extensions compatibility with older Firefoxen you would need to use a setInterval-style poller checking location.hash to determine when this happens.

bobince
Thanks a ton.. that explains what is happening in my case!
kambamsu