आप कुछ इस तरह कर सकते हैं काम करने लगता है:
var theWindow = window.open('http://stackoverflow.com'),
theScript = document.createElement('script');
function injectThis() {
// The code you want to inject goes here
alert(document.body.innerHTML);
}
// Self executing function
theScript.innerHTML = '(' + injectThis.toString() + '());';
theWindow.onload = function() {
// Append the script to the new window's body.
// Only seems to work with `this`
this.document.body.appendChild(theScript);
};
और किसी कारण से आप eval उपयोग करना चाहते हैं: कोड के पहले बिट के लिए
var theWindow = window.open('http://stackoverflow.com'),
theScript;
function injectThis() {
// The code you want to inject goes here
alert(document.body.innerHTML);
}
// Self executing function
theScript = '(' + injectThis.toString() + '());';
theWindow.onload = function() {
this.eval(theScript);
};
यह क्या करता है (स्पष्टीकरण। सभी उदाहरण काफी समान हैं):
- नई विंडो
- नई विंडो के
document
- एक स्क्रिप्ट तत्व बनाता है के लिए एक संदर्भ हो जाता है खोलता है
- स्थान सभी कोड आप में 'इंजेक्षन' करना चाहते हैं एक समारोह
- परिवर्तन स्क्रिप्ट के
innerHTML
लोड करने के लिए समारोह कहा कि जब खिड़की भार, window.onload
घटना के साथ (आप भी addEventListener
उपयोग कर सकते हैं)। मैंने सुविधा के लिए toString()
का उपयोग किया, इसलिए आपको स्ट्रिंग्स का एक गुच्छा जोड़ना नहीं है। toString
मूल रूप से स्ट्रिंग के रूप में पूरे injectThis
फ़ंक्शन को लौटाता है।
- स्क्रिप्ट को नई विंडो के
document.body
में जोड़ता है, यह वास्तव में इसे लोड किए गए दस्तावेज़ में संलग्न नहीं करेगा, यह लोड होने से पहले इसे जोड़ता है (खाली शरीर में), और यही कारण है कि आपको window.onload
का उपयोग करना होगा, ताकि आपकी स्क्रिप्ट नए दस्तावेज़ में हेरफेर कर सकती है।
यह शायद एक अच्छा विचार window.addEventListener('load', injectThis.toString());
बजाय window.onload
उपयोग करने के लिए है, के मामले में आप पहले से ही अपने नए पृष्ठ के भीतर एक स्क्रिप्ट window.onload
घटना का उपयोग करता है (यह इंजेक्शन स्क्रिप्ट के ऊपर लिख चाहते हैं)।
ध्यान दें कि आप injectThis
समारोह के अंदर कुछ भी कर सकते हैं: DIVs संलग्न, डोम प्रश्नों करते हैं, और भी अधिक लिपियों, आदि जोड़ने ...
भी ध्यान रखें कि आप theWindow.onload
के अंदर नई विंडो के डोम में हेरफेर कर सकते हैं घटना, this
का उपयोग कर।
स्रोत
2015-04-28 04:11:27
आईई 11 पर काम नहीं करता है। – Suncatcher
एफएफ पर काम करता है। क्रोम? नहीं। –