2014-12-23 36 views
6

Bir Chrome uzantısı geliştiriyorum ve şartım, her bir sekme için sayfada eleman (düğme) oluşturmak ve tıklayarak basit uyarı mesajı göstermek istiyor düğmesi ... her şey için uygun şekilde çalışıyor ancak her zaman Gmail, Facebook ve Stackoverflow ile sorun yaratıyor ... lütfen bu sorunu çözmek için bana yardımcı olun.İçerik komut dosyası tarafından oluşturulan sayfa, Gmail, Facebook, stackoverflow vb. Ile ilgili sorun yaratma unsuru

İçerik komut dosyamda bir web sayfasına düğme ekleme kodunu yaşıyorum.

manifest.json 
     .... 
     .... 
     "content_scripts": [ 
     { 
     "matches":["http://*/*", "https://*/*"], 
     "css": [ "style.css" ], 
     "js":["contentScript.js"], 
     "all_frames": false, 
     "run_at": "document_idle" 
     } 
     ] 
     .... 
     .... 

contentScript.js

.... 
.... 
    function addButton() { 
document.body.innerHTML += '<button id="my_button" class="buttonCss">Show Button</button>'; 
var button = document.getElementById("my_button"); 
button.addEventListener("click", function() { 
    alert("hello"); 
}, false); 

} ..... ..... ....

Bazı Gmail güvenlik özellikleri sorunu yaratıyor düşünüyorum.

+0

tanımadığın konuyla ilgili bazı kodları ekleyiniz Could:

uygun yolu inşa etmek ve bir DOM düğümü eklemek olurdu? – gui47

+1

@ gui47: Soruyu düzenledim. Lütfen bir göz at. –

cevap

1
document.body.innerHTML += /* ... */ 

Bu sorunun sizin için geçerli olduğunu düşünüyorum. Chrome, body'un tüm DOM'sini eklenen etkinlikleri/verileri kaybederek yeniden oluşturmaya zorlar.

var button = document.createElement("button"); 
button.id = "my_button"; 
button.className = "buttonCss"; 
button.textContent = "Show Button"; 
document.body.appendChild(button); 
İlgili konular