2016-03-30 9 views
5

हटाने से पहले जे एस कोड खत्म यह गारंटी है कि इस कोडइंजेक्शन करेंगे

function runEmbeddedJSInPageEnvironment(code) { 
    var e = document.createElement('script'); 
    e.type = 'text/javascript'; 
    e.appendChild(document.createTextNode(code)); 
    (document.head || document.documentElement).appendChild(e); 
    e.parentNode.removeChild(e); 
} 

runEmbeddedJSInPageEnvironment("$('#someform').off('submit');"); 

कोड runEmbeddedJSInPageEnvironment के लिए पारित पहले समाप्त होने की प्रतीक्षा करेंगे, और उसके बाद ही removeChild कार्यप्रणाली को कॉल करके पेज से निकालें?

या इस कोड को निष्पादित करने से पहले इसे हटाया जा सकता है?

+0

मुझे लगता है कि यह ब्राउज़र – llamerr

+1

पर निर्भर करता है और सुनिश्चित करें कि 'scr.onload' - http://stackoverflow.com/questions/1293367/how-to-detect-if-javascript-files-are-loaded (और बाद में बच्चे को हटाएं) – llamerr

+0

मैं कतार का उपयोग यहां के रूप में करता हूं - http://stackoverflow.com/questions/899102/how-do-i-store-javascript-functions-in-a-queue-for-them-to- हो-निष्पादित-eventuall –

उत्तर

3

हां, एचटीएमएल 5 के अनुसार कोड script तत्व को हटाने से पहले चला जाएगा।

जब आप इसे दस्तावेज़ में सम्मिलित, इसे तुरंत prepared है:

जब एक script तत्व यह है कि होने के रूप में चिह्नित नहीं है "parser-inserted" अनुभवों सूची निम्नलिखित में सूचीबद्ध घटनाओं में से एक, उपयोगकर्ता एजेंट चाहिए

  • script तत्व हो जाता है: तुल्यकालिक script तत्व prepare 63,210, समय डोम के अनुसार node is inserted, किसी भी अन्य script कि Document में पहले tree order में हैं एक ही समय में डाला तत्वों के बाद कम से।

prepare a script एल्गोरिथ्म के 15 कदम पर, script के बाद से एक src विशेषता नहीं है और "parser inserted" के रूप में चिह्नित नहीं किया गया है, अपने मामले पिछले एक होगा:

अन्यथा: उपयोगकर्ता एजेंट को तत्काल execute the script block होना चाहिए, भले ही अन्य स्क्रिप्ट पहले ही निष्पादित हो रही हों।

लेकिन निश्चित रूप से, यदि उस स्क्रिप्ट में setTimeout जैसे असीमित कोड है, तो उसे स्थगित कर दिया जाएगा।

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