2013-03-20 5 views
5

Web sayfam html kodumda bu js işlevi var.Web sayfası js'yi chrome uzantısı içerik komut dosyasından yürütme

function update() { 
    document.getElementById("textbox ").value = updatetext; 
} 

"Konsol (chrome) konsolundan" update() "i çalıştırdığımda çalışır.
Ama, krom uzantısından yürütmek eğer

chrome.tabs.executeScript(tab.id, {code: "update();"}, function(result){}); 

Bu güncelleme tanımlı değil diyor. Ama "alert ('ok')” ile değiştirirsem çalışır.
Sonra Chrome uzantısı İçerik komut içinde

eval("update()") 

yürütün. Ayrıca "güncelleme tanımlanmamış" diyor.

Web sayfasında js işlevini çağırmak için ne yapabilirim?

+0

olası kopya - sayfaya kod enjekte Bir İçerik script kullanarak ] (http://stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a-page-using-a-content-script) – Xan

+0

Ya da sorularınızla ilgili daha da iyi yorumlar: [Background.js'den sayfa düzeyinde kod yürütme ve değeri geri gönderme] (http://stackoverflow.com/questions/26140443/executing-code-at-page-level-from-background-js-and-returning -the-value/26141393) – Xan

cevap

7

Krom güvenli bir kutuda içerik komut dosyaları çalıştırır, böylece web sayfasının ile etkileşim bir satır içi komut dosyası enjekte etmek gerekir: [bir Chrome Uzantısı Bina

var injectedCode = 'update()'; 
var script = document.createElement('script'); 
script.appendChild(document.createTextNode('('+ injectedCode +')();')); 
(document.body || document.head || document.documentElement).appendChild(script); 
+1

teşekkürler, js işlevi zekâsını yürütmek istiyorsanız h dönüş değeri? dönüş değerini nasıl alabilirim? @KAdot –

+0

Dönüş değerini gizli DOM öğesinin bir üyesi olarak saklayabilir, ardından içerik komut dosyasından okuyabilirsiniz. – KAdot

+0

Bir kod örneği gönderir misiniz? document.documentElement.setAttribute() yöntemini denedim, ancak yalnızca String değerini ayarlayabilir, js nesnesinde çalışmaz. Bir js nesnesini döndürmenin bir yolu var mı? @KAdot –