IE8

2012-08-30 12 views
17

में स्क्रिप्ट टैग बनाएं I IE8 में हमारी साइट का परीक्षण कर रहा था और Unexpected call to method or property access. त्रुटि डर गई।IE8

डिबगिंग के बहुत सारे के बाद (IE8 के DevTools चूसना), मैं अपमानजनक लाइन पाया।

$('<script>').html(JSData).appendTo('head') 

समस्या $('<script>').html(JSData) है। मैंने बस कंसोल में चलाने की कोशिश की, और मुझे अभी भी त्रुटि मिली।

क्यों IE8 एक नव निर्मित स्क्रिप्ट टैग पर .html नहीं निर्धारित कर सकते हैं?

पीएस यह भी विफल रहता है:

$(document.createElement('script')).html(JSData) 

अद्यतन: मैं jQuery के बिना स्क्रिप्ट टैग बनाने की कोशिश की:

var scriptTag = document.createElement('script'); 
scriptTag.type = 'text/javascript'; 
scriptTag.innerHTML = JSData; 

scriptTag.innerHTML = JSData; लाइन पर, IE8 Unknown runtime error देता है। धन्यवाद आईई 8।

+4

क्या आपने 'html' के बजाय' text' का उपयोग करने का प्रयास किया है? – Shmiddty

+0

ऐसा लगता है कि वैसे भी 'eval() 'स्क्रिप्ट के लिए यह आसान/बेहतर होगा। – Pointy

+0

@ पॉइंटी: मैं 'eval' (या बल्कि, jQuery की' $ .globalEval') का उपयोग कर सकता था, लेकिन मुझे लगा कि यह "तेज़" हो सकता है। –

उत्तर

15

आपकी जावास्क्रिप्ट केवल विधि को दस्तावेज़ में स्क्रिप्ट तत्व जोड़ने की आवश्यकता है।

आईई < 9 स्क्रिप्ट टैग पर innerHTML या childNodes को नहीं पहचानता है, लेकिन सभी ब्राउज़रों पाठ संपत्ति समर्थन करते हैं।

var scriptTag = document.createElement('script'); 
scriptTag.text= JSData; 
document.body.appendChild(scriptTag); 
+0

हम्म, यह काम करने लगता है जिज्ञासु कि '$ ('