2012-06-14 36 views
5

Tôi đang cố gắng lấy dữ liệu từ trang mà người dùng đang xem và gửi dữ liệu đó đến cửa sổ bật lên tiện ích. Tôi đang gặp sự cố khi trích xuất thông tin từ trang hiện tại. Sau khi xem lại hướng dẫn về mã google, tôi thiết lập tệp kê khai và nội dung của mình như được hiển thị bên dưới. Khi tôi đi đến một trang thử nghiệm, trong đó có một khoảng với id = "ý kiến", biến của tôi từ kịch bản nội dung tiêm luôn luôn kết thúc bằng null. Bất cứ ai biết những gì tôi có thể bị mất tích? Cảm ơn!Tập lệnh nội dung Tiện ích mở rộng của Chrome không truy cập DOM của trang mà nó được tiêm

manifest.json 
================= 
{ 
    "name": "Sample Extension", 
    "version": "0.0.1", 
    "description": "Sample extension", 
    "icons": {"128": "icon.png"}, 
    "permissions": [ 
     "tabs", "<all_urls>" 
    ], 
    "browser_action": { 
     "default_icon": "browseraction.png", 
     "default_title": "Sample", 
     "popup": "popup.html" 
    }, 
    "content_scripts": [ 
     { 
      "matches": ["http://*/*", "<all_urls>" ], 
      "js": ["scripts/contentscript.js"] 
     } 
    ] 
} 

contentscript.js 
=================== 
var comments = document.getElementById("comments"); 
alert(comments.innerText); 

Trả lời

6

Có thể nhận xét được tải sau khi thực thi tập lệnh của bạn.

Cố gắng thiết lập này trong biểu hiện:

 "run_at" : "document_end", 

Hoặc nếu bạn nghi ngờ một AJAX tải, gọi mã của bạn sau đó với một setTimeout.

Tất nhiên, lược đồ tốt nhất sẽ phụ thuộc vào trang chính xác và hoạt động bên trong của nó.

+1

+1 nhưng có lẽ anh ấy nên sử dụng 'textContent'. –

+0

Cảm ơn các bạn! Tôi đã sử dụng cả hai đề xuất, sử dụng "run_at" và "textContent", và chúng hoạt động hoàn hảo. – sojo2600

+0

'innerText' được ủng hộ trong hướng dẫn dành cho nhà phát triển tiện ích mở rộng của chrome. - Không cần phải tránh nó ở đây. –

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