मुझे पता है कि यह एक किया और सुलझा हुआ सौदा है, लेकिन यहां मैं अपने ऐप में समस्या को हल करने के लिए उपयोग कर रहा हूं।
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
मूल रूप से यहाँ क्या चल रहा है, अगर लिंक में कोई target=_blankविशेषता है तो मैं उसके लिए एक चेक चलाता हूं । यदि ऐसा नहीं होता है, तो यह लिंक को ट्रिगर करने से रोकता है, इसे एक नई विंडो में खोलने के लिए सेट करता है, फिर प्रोग्रामेटिक रूप से इस पर क्लिक करता है।
आप एक कदम आगे जा सकते हैं और मूल क्लिक को रोकना (और अपने कोड को पूरी तरह से अधिक कॉम्पैक्ट बना सकते हैं) यह कोशिश करके:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
यदि आप एक विशेषता क्रॉस-ब्राउज़र जोड़ने के कार्यान्वयन को दूर करने के लिए jQuery का उपयोग कर रहे थे, तो आपको इसके बजाय इसका उपयोग करना चाहिए e.target.setAttribute("target", "_blank"):
jQuery(event.target).attr("target", "_blank")
आपको अपने सटीक उपयोग-मामले को फिट करने के लिए इसे फिर से बनाने की आवश्यकता हो सकती है, लेकिन यहां बताया गया है कि कैसे मैंने अपनी खुद की खुजली को खरोंच दिया।
यहाँ आप के साथ गड़बड़ करने के लिए कार्रवाई में इसका एक डेमो है।
(Jsfiddle में लिंक इस चर्चा में वापस आता है .. कोई नया टैब नहीं चाहिए :))
target="_top"एक नई विंडो में नहीं खुलता है -target="_blank"करता है।