PDA

View Full Version : Safari JavaScript loading




nelly22
Nov 27, 2012, 08:03 AM
In Safari when JavaScripts is turned from off to on, it loads js in all tabs in all windows.

Is there any extension/plugin/... which loads js only in current tab or only in new tabs?



GGJstudios
Nov 27, 2012, 09:57 AM
In Safari when JavaScripts is turned from off to on, it loads js in all tabs in all windows.

Is there any extension/plugin/... which loads js only in current tab or only in new tabs?
You didn't mention what version of Safari you're using, but in Safari 5, if you have JavaScript disabled when you visit a page, then enable JavaScript, it does not load any JavaScript until you refresh the page or go to a new page. That behavior may or may not have changed with Safari 6. I use JavaScript Blocker (http://javascript-blocker.toggleable.com/) to manage JavaScript on sites I visit.

wrldwzrd89
Nov 27, 2012, 10:06 AM
A quick Google search doesn't find anything particularly informative.

However, creating a Safari extension to achieve this end should not be that hard.

This little bit of JavaScript will fetch the particular tab that is active (note that this only works in the context of a Safari Extension):
safari.application.activeBrowserWindow.activeTab

Combining that with a block content startup script, like this 2-part one:
function isItOkay() {
var myMessageData = event.url;
var theAnswer = safari.self.tab.canLoad(event, myMessageData);
if (theAnswer == "block") {
event.preventDefault();
}
}

document.addEventListener("beforeload", isItOkay, true);

function blockOrAllow(event) {
if (event.name === "canLoad") {
var itsAnAd = event.message.match(/ads.example.com/i);
if (itsAnAd) {
event.message = "block";
}
else {
event.message = "allow";
}
}
}

safari.application.addEventListener("message", blockOrAllow, true);
...and modifying the code accordingly to intercept and stop JS in inactive tabs from running. If you're not a coder like me, I wouldn't be surprised if you don't understand anything I posted. That's okay, though - I do, and I'd be willing to help address a need that I am sure others besides you are looking for.