2013-01-05 23 views
6

अभी पैदावार जावास्क्रिप्ट/jQuery में एक लिंक पर एक क्लिक का अनुकरण करना, मैं निम्नलिखित कोड है: यदि आप पृष्ठभूमि div पर कहीं भी क्लिक करें, प्रभावी ढंग सेकि सामान्य ब्राउज़र के व्यवहार

<script> 
$("#clickme").click(function(){ 
    $("#clicker").click(); 
}); 
</script> 
<div id="clickme" style="height:20em; width:20em;"> 
    <a id="clicker" href="http://www.google.com"> Link </a> 
</div> 

, जावास्क्रिप्ट एक अनुकरण करेगा वास्तविक लिंक पर क्लिक करें और आपको गंतव्य पृष्ठ पर ले जाएं।

हालांकि, जब आप ctrl-click करने का प्रयास करते हैं, तो यह बहुत अच्छा काम नहीं करता है, क्योंकि ब्राउज़र एक नया टैब नहीं खुलता है, और इसके बजाय यूआरएल को वर्तमान विंडो में लोड करता है।

इस व्यवहार के बजाय, पृष्ठभूमि पर क्लिक होने पर, मैं सामान्य ब्राउज़र व्यवहार (यानी एक नया टैब खोल सकता हूं, ctrl-click के लिए वर्तमान विंडो को नहीं बदलना) चाहता हूं। क्या जावास्क्रिप्ट/jQuery में ऐसा करने का कोई तरीका है?

मैं उदास होने वाली "ctrl" कुंजी का पता लगाने की कोशिश नहीं करना चाहूंगा- कुछ समान मामले हैं और मेरे पास ऐसा समाधान होगा जो इस तरह के हर किनारे के मामले को पकड़ने की कोशिश करने के बजाय सबकुछ हल करता है।

+0

इस प्रश्न को पढ़ने पर विचार करें: http://stackoverflow.com/questions/7867329/jquery-open-url-in-new-tab –

उत्तर

2

एक समारोह है कि यह (या तो नई विंडो या टैब है, जो नियंत्रित नहीं कर सकते) करना होगा ...

function open_url(url) { 
    if (flag) { 
     window.open(url, '_blank'); 
     window.focus(); 
    } else { 
     window.location.href = url; 
    } 
} 
बेशक

, आप Ctrl कुंजी दबाने पर कब्जा करना होगा ...

$(window).keypress(function(event) { 
    if (event.ctrlKey) { 
     // set flag 
     flag = true; 
    } else { 
     // unset flag 
     flag = false; 
    } 
}); 
2

मैं जानता हूँ कि यह जावास्क्रिप्ट नहीं है, लेकिन मुझे लगता है कि एक अच्छा समाधान एक बिल्कुल तैनात लिंक का उपयोग करें और स्थापित करने के लिए होगा अपने z-index एक ऋणात्मक संख्या इतनी है कि div में सामग्री पर क्लिक करने के लिए नहीं जाना होगा करने के लिए संपर्क। (जब तक यह ज़ेड-इंडेक्स को अनदेखा करने की अपेक्षा नहीं है) तो div की पृष्ठभूमि पर क्लिक करने से नियमित लिंक की तरह कार्य किया जाएगा। इस fiddle

यहाँ देखें एचटीएमएल

<div id="clickme"><a id="clicker" href="http://suu.edu"></a><p>text text</p></div> 

और सीएसएस

#clickme{ 
    position: relative; 
    width: 500px; 
    height: 500px; 
    border: 1px solid #000; 
    z-index: 1; 
} 

#clicker{ 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    z-index: -1; 
} 

आप सीएसएस के साथ cursor बदल सकते हैं यदि आप इसे div तरह देखने के लिए नहीं करना चाहती है एक कड़ी है ।

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