2013-03-20 11 views
5

मेरे पास यह जेएस मेरे वेब पेज एचटीएमएल कोड में काम करता है।क्रोम एक्सटेंशन सामग्री स्क्रिप्ट से वेब पेज जेएस निष्पादित करें

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

जब मैं क्रोम कंसोल से "अपडेट()" निष्पादित करता हूं, तो यह काम करता है।
लेकिन मैं, क्रोम विस्तार से अमल करता है, तो

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

इसे कहते हैं अद्यतन परिभाषित नहीं है। लेकिन अगर मैं "अलर्ट ('ठीक')" के साथ प्रतिस्थापित करता हूं, तो यह काम करता है।
तब मैं Chrome एक्सटेंशन सामग्री स्क्रिप्ट में

eval("update()") 

निष्पादित। यह भी कहता है "अद्यतन परिभाषित नहीं है।"

तो वेब पेज पर जेएस फ़ंक्शन कॉल करने के लिए मैं क्या कर सकता हूं?

+0

[बिल्डिंग एक Chrome एक्सटेंशन के संभावित डुप्लिकेट - एक सामग्री स्क्रिप्ट का उपयोग कर एक पेज में कोड सम्मिलित करें ] (http://stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a-page-using-a-content-script) – Xan

+0

या यहां तक ​​कि आपके प्रश्नों के संबंध में बेहतर टिप्पणियां: [Background.js से पेज-स्तर पर कोड निष्पादित करना और मान वापस करना] (http://stackoverflow.com/questions/26140443/executing-code-at-page-level-from-background-js-and-returning -the-value/26141393) – Xan

उत्तर

7

क्रोम सैंडबॉक्स में सामग्री स्क्रिप्ट निष्पादित करता है, तो आप वेब पेज के साथ बातचीत करने के लिए एक इनलाइन स्क्रिप्ट इंजेक्षन करने की जरूरत है:

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

धन्यवाद, अगर मैं एक जेएस फ़ंक्शन बुद्धि निष्पादित करना चाहता हूं एच वापसी मूल्य? मैं वापसी मूल्य कैसे प्राप्त कर सकता हूं? @KAdot –

+0

आप छुपे हुए DOM तत्व के सदस्य के रूप में वापसी मान संग्रहीत कर सकते हैं, फिर इसे सामग्री स्क्रिप्ट से पढ़ें। – KAdot

+0

क्या आप एक कोड उदाहरण पोस्ट कर सकते हैं? मैंने document.documentElement.setAttribute() को आज़माया, लेकिन यह केवल स्ट्रिंग मान सेट कर सकता है, जेएस ऑब्जेक्ट पर काम नहीं करता है। क्या जेएस ऑब्जेक्ट वापस करने का कोई तरीका है? @KAdot –

संबंधित मुद्दे