2012-06-26 25 views
6

Tôi chỉ có thể xem như thế nào để thực hiện một kịch bản trong khung cấp cao nhất hoặc trong tất cả các khung trong một tab nhất định:Execute kịch bản trong khung cụ thể

chrome.tabs.executeScript(integer tabId, object details, function callback) 

đâu nếu details.allFramestrue sau đó nó sẽ được thực hiện trong mỗi khung phụ, nhưng nếu nó sai, nó sẽ chỉ thực hiện trong khung cấp cao nhất. Làm thế nào tôi có thể cung cấp frameId để thực thi tập lệnh trong?

Trả lời

5

Theo như tôi biết, bạn không thể. Thay vào đó, hãy đặt allFrames: true và viết javascript trong tập lệnh nội dung để phát hiện xem đó có phải là khung chính xác hay không và trả lại mà không làm bất cứ điều gì nếu đó không phải là khung chính xác.

+0

Tôi đoán rằng sẽ phải làm ... Thở dài. Bất kỳ lời khuyên nào về việc phát hiện khung nào đang thực hiện? – Daniel

+0

Bạn có thể lấy URL tài liệu trong tập lệnh nội dung và kiểm tra xem đó có phải là tập lệnh bạn muốn – Siddhi

+3

Điều này có vẻ không đúng - tại sao bạn không thể chỉ định 'frameId'? Được rồi, tôi sẽ ngừng rên rỉ. – Daniel

2

Đây là con đường tôi đã đi để giải quyết cùng một vấn đề này:

https://github.com/Rob--W/chrome-api/blob/master/chrome.tabs.executeScriptInFrame/chrome.tabs.executeScriptInFrame.js

function alertCookie(tabId, frameId) { 
chrome.tabs.executeScriptInFrame(tabId, { 
    frameId: frameId, 
    code: '// This code runs in one frame, specified via frameId \n' + 
      'alert(location.href);' + 
      'document.cookie;' 
}, function(results) { 
    if (!results) { 
     alert('Failed to execute code. See background page for details.'); 
     return; 
    } 
    var cookie = results[0]; 
    alert('Found cookie: ' + cookie); 
}); 

}

1

Từ documentation

Nếu allFrames là đúng, ngụ ý rằng JavaScript hoặc CSS nên được tiêm vào tất cả các khung của trang hiện tại. Theo mặc định, nó sai và chỉ được tiêm vào khung trên cùng. Nếu true và frameId được thiết lập, thì mã sẽ được chèn vào khung đã chọn và tất cả các khung con của nó.

Các vấn đề liên quan