Блок JS с аддоном Firefox - PullRequest
1 голос
/ 01 марта 2012

Я разрабатываю небольшой аддон Firefox с аддоном-SDK, предоставленным Mozilla.Аддон должен работать только на одном конкретном сайте, и ему нужно заблокировать js-файл с этого сайта.Я часами ищу, как заблокировать такой запрос.

Надеюсь, кто-то знает ответ

1 Ответ

1 голос
/ 15 июля 2012

Да, вам придется делать это в основном вручную. SDK вам здесь совсем не поможет, но это возможно.

Это то, что вам нужно сделать. Обратите внимание, что это не проверено и не будет работать «из коробки», а просто даст вам представление о том, какие компоненты задействованы и где можно найти больше ресурсов.

const { Cc, Ci, Cm, components } = require("chrome");
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
const CategoryManager = Cc["@mozilla.org/categorymanager;1"]
                                .getService(Ci.nsICategoryManager);

function PolicyComponent() { }  

PolicyComponent.prototype = {  
  desc:             "My nsIContentPolicy XPCOM Component",  
  classID:          components.ID("{3ffd2f60-3784-11e1-b86c-0800200c9a66}"),  
  contractID:       "@abc.def.com/policycomp;1",
  QueryInterface:   XPCOMUtils.generateQI([Ci.nsIContentPolicy]),

  shouldLoad: function(contentType, contentLocation, requestOrigin, aContext, mimeTypeGuess, extra) {
    if (contentLocation.spec != BLOCKED_JS) { return return Ci.nsIContentPolicy.ACCEPT; }
    else { return Ci.nsIContentPolicy.REJECT_REQUEST; }
  },
  shouldProcess: function() {
    return CI.nsIContentPolicy.ACCEPT;
  }
}

var pc = new PolicyComponent()

// Register the Interface
Cm.QueryInterface(Ci.nsIComponentRegistrar).registerFactory(pc.uuid, pc.desc, pc.contractID, pc);

// Add the content policy 
CategoryManager.addCategoryEntry("content-policy",pc.className,pc.contractID, true, true);  // not sure you should replace (last true statement)

Смотрите этот пост больше: Чего не хватает в моей реализации XPCOMponent расширения nsIContentPolicy Firefox / IceWeasel для вызова shouldLoad?

Также взгляните на эти документы: https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads#Content_Policy

...