5

Tôi đang tạo tiện ích mở rộng chrome. Một phần của tiện ích mở rộng này cần có khả năng mô phỏng nhấp chuột để kích hoạt các sự kiện onClick trên trang. Đây là đoạn mã từ kịch bản nền:Nhấp chuột được mô phỏng trong Tiện ích mở rộng của Chrome

function checkForValidUrl(tabId, changeInfo, tab) { 
    // If the letter 'g' is found in the tab's URL... 
    if (tab.url.indexOf('maps') > -1 && tab.url.indexOf('google') > -1) { 
    // ... show the page action. 
    chrome.pageAction.show(tabId); 

    } 
}; 

// Listen for any changes to the URL of any tab. 
chrome.tabs.onUpdated.addListener(checkForValidUrl); 


chrome.pageAction.onClicked.addListener(function() { 
    document.getElementById("paneltoggle2").click(); 
}); 

Dưới đây là thông báo lỗi rằng tôi nhận được từ java script debugging chrome của:

Error in event handler for 'pageAction.onClicked': Cannot call method 'click' of null TypeError: Cannot call method 'click' of null 
    at chrome-extension://deogcaeekneeagffbhdlflichjlodlem/js/main.js:26:42 
    at chrome.Event.dispatchToListener (event_bindings:387:21) 
    at chrome.Event.dispatch_ (event_bindings:373:27) 
    at dispatchArgs (event_bindings:249:22) 
    at Object.chromeHidden.Event.dispatchEvent (event_bindings:257:7) event_bindings:377 
chrome.Event.dispatch_ event_bindings:377 
dispatchArgs event_bindings:249 
chromeHidden.Event.dispatchEvent event_bindings:257 

Tôi đoán rằng đó là một cái gì đó để làm với các điều khoản trong tệp kê khai ... Ngay bây giờ tôi chỉ có quyền đối với "tab". Có một số quyền khác mà tôi cần kích hoạt để mô phỏng nhấp chuột và không nhận được lỗi không? Oh và tôi đang cố gắng làm cho điều này có khả năng với giao thức phiên bản 2.

Cảm ơn, Leinardo

Trả lời

4

Script môi trường thực hiện khác nhau đối với tiện ích mở rộng và trang.

Sử dụng chrome.tabs.executeScript

Ví dụ, để dán một số văn bản đến lĩnh vực tìm kiếm Google

File: manifest.json

{ 
    "name": "My Test", 
    "version": "1", 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "page_action": { 
     "default_icon": "icon.png" 
    }, 
    "permissions": ["tabs", "http://*/*", "https://*/*"] 
} 

File: background.js

function checkForValidUrl(tabId, changeInfo, tab) { 
    if (tab.url.indexOf("g") > -1) { 
     chrome.pageAction.show(tabId); 
    } 
} 

chrome.tabs.onUpdated.addListener(checkForValidUrl); 

chrome.pageAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(tab.id, {code: "document.getElementById('gbqfq').value = 'Hello World!';"}); 
}); 

Trong tệp kê khai cần có quyền lưu trữ ()).

Nhưng nếu câu hỏi là đúng về Javascript sự kiện click, nhìn đây How to simulate a click with JavaScript?

+0

Làm việc một cách hoàn hảo. Cảm ơn bạn rất nhiều! –

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