2014-07-20 13 views
6

Tôi cố gắng để chạy một kịch bản trên tải trang sử dụng pageMod: nhưng tôi không thể nhìn thấy ảnh hưởng của nóFireFox Addon: Làm thế nào để ghi đè lên bản js chức năng

var data = require("sdk/self").data; 
var attachTo = require("sdk/content/mod").attachTo; 
var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*", 
    contentScriptWhen: "start", 
    allow:true, 
    attachTo: ["existing", "top"], 
    contentScriptFile: [data.url("jquery-2.1.1.min.js"), 
        data.url("somejs.js")], 


}) 

Bên trong tập tin somejs.js của tôi, tôi đã overriden gửi biểu mẫu chức năng:

document.forms['frmMain'].submit=function submit(){alert("Submitting")... 
...do some stuff 

}; 

Trên trang web của tôi có một nút mà submit form:

frmMain.method="post" 
    frmMain.action = "someurl"; 
    frmMain.submit(); 

Nhưng khi tôi nhấp vào nút, nó không gọi phương pháp overriden tôi đã xác định ở trên. Khi tôi ghi đè chức năng bằng bảng điều khiển firebug Nó hoạt động! SO những gì hiện firebug làm để chạy lệnh để tôi có thể làm tương tự trong mã addon của tôi để đạt được điều tương tự.

Trả lời

3

mỗi Interacting with page scripts bạn sẽ

  1. cần sử dụng unsafeWindow để thay đổi được phản ánh trong các kịch bản nội dung và
  2. cần phải đúng cách xuất khẩu một chức năng từ kịch bản nội dung được callable từ đoạn mã của trang.

Các công trình sau đây cho tôi:

function submit() { 
    console.log("Submitting"); 
    alert("Submitting"); 
}; 
unsafeWindow.document.forms['frmMain'].submit = 
    exportFunction(submit, unsafeWindow); 
Các vấn đề liên quan