2 require("extension.js");
4 if (!extension_is_enabled("{73a6fe31-595d-460b-a920-fcc0f8843232}"))
5 throw skip_module_load;
7 var noscript_service = Cc["@maone.net/noscript-service;1"]
8 .createInstance().wrappedJSObject;
12 o:for(var i = 0, n = a.length; i < n; i++) {
13 for(var x = 0, y = r.length; x < y; x++) {
14 if(r[x]==a[i]) continue o;
21 function hideObject(p, o) {
22 if (!p.mimeRx.test(o.type)) return;
23 var r = p.document.createElement("object");
24 r.style.width = o.offsetWidth + "px";
25 r.style.height = o.offsetHeight + "px";
26 r.style.display = "inline-block";
27 o.className += " " + p.className;
28 o.parentNode.insertBefore(r, o);
31 function showObject(p, o) {
33 cs = cs.replace(p.classRx, '');
34 if (cs != o.className) {
36 var r = o.previousSibling;
37 if (r instanceof HTMLObjectElement) {
38 r.parentNode.removeChild(r);
43 function setObjectVisibility(document, callback) {
44 var tags = ["object", "embed"];
45 const ns = noscript_service;
46 var rx = ns.hideOnUnloadRegExp;
51 classRx: ns.hideObjClassNameRx,
52 className: ns.hideObjClassName
56 var local_objects, count;
58 for each(var tag in tags) {
59 local_objects = document.getElementsByTagName(tag);
60 count = local_objects.count;
62 objects = objects || [local_objects[--count]];
64 objects.push(local_objects[count]);
69 for (counter = objects.length; counter-- > 0;) {
70 callback(params, objects[counter]);
76 function ns_allow_temp(url, buffer, P, allow) {
78 const ns = noscript_service;
79 if (allow == "Y" || allow == "y" || allow == "yes" || allow == "Yes") {
81 temp = ns.getPref("toggle.temp");
82 ns.setTemp(url, enabled && temp);
83 ns.setJSEnabled(url, enabled, false, ns.mustCascadeTrust(url, temp));
84 setObjectVisibility(buffer.document,showObject);
87 temp = ns.getPref("toggle.temp");
88 ns.setTemp(url, enabled && temp);
89 ns.setJSEnabled(url, enabled, false, ns.mustCascadeTrust(url, temp));
90 setObjectVisibility(buffer.document,hideObject);
94 interactive("ns-toggle-temp", "Allow a site temporary access to javascript", function(I) {
95 const ns = noscript_service;
96 var urls = new Array();
97 var level = ns.getPref("toolbarToggle", 3);
98 if (!level) level = 3;
99 const url = ns.getQuickSite(I.buffer.document.documentURI, level);
102 var scripts = I.buffer.document.getElementsByTagName("script");
103 for(i = 0;i < scripts.length;i++) {
104 if (scripts[i].getAttribute("src")) {
105 matches = scripts[i].getAttribute("src").split("/");
106 if (matches[0] == "http:") {
107 urls.push(matches[2]);
112 while (url2 = urls.pop()) {
113 ns_allow_temp(url2, I.buffer,I.P, (yield I.minibuffer.read ($prompt = "Allow "+url2+"? [Y/[N]]")));
115 reload(I.buffer, I.P);