2010-12-28 10 views
11

पर ध्यान केंद्रित करें मैं एक वेबसाइट को ठीक करने की कोशिश कर रहा हूं।एचटीएमएल नए लक्ष्य पर एक यूआरएल खोलें और

यह एक नई विंडो/टैब में एक सहायता पृष्ठ <a href="..." target="help"> के माध्यम से (कोई अन्य फ्रेम का यह नाम है)

यह अच्छी तरह से पहली बार एक नई विंडो/टैब खोलने, मदद के लिए काम करता है खोलता है। लेकिन बाद के क्लिक पर विंडो/टैब लोड हो गया है लेकिन छुपा रहता है।

मैंने कोशिश की यह:

<script> 
    function OpenAndFocusHelp() { 
     win=window.open('help/1000CH00017.htm','help'); 
     win.focus(); 
    }  
</script> 

<a href="help.html" target="help" 
    onclick="OpenAndFocusHelp()">Help</a> 

यह काम नहीं किया!

+0

तो खिड़की लोड हो रही है, बस दिख रही नहीं है? क्या यह सही पृष्ठ लोड कर रहा है? क्या यह हर ब्राउज़र में एक ही व्यवहार है? मुझे लगता है कि यह एक विंडो प्रबंधक चिंता है, ऐसा कुछ नहीं जो आप जावास्क्रिप्ट से कर सकते हैं, लेकिन मैं अब के लिए अभिनीत हूं, मैं साथ चलना चाहता हूं। – jcolebrand

उत्तर

3

मुझे लगता है कि इस सुविधा ब्राउज़र-विशिष्ट है और आप नए टैब या विंडो ध्यान केंद्रित के लिए व्यवहार को परिभाषित नहीं कर सकते ..

2

आप के बजाय इस तरह के कोड हो सकता है:

var _arrAllWindows = new Array(); 
function OpenOrFocus(oLink, sTarget) { 
    var oWindow = _arrAllWindows[sTarget]; 
    if (!oWindow || oWindow.closed) { 
     oWindow = window.open(oLink.href, sTarget); 
     _arrAllWindows[sTarget] = oWindow; 
    } 
    oWindow.focus(); 
    return false; 
} 

तो यह कॉल करने के लिए , इस तरह के लिंक है: क्रोम और IE में

<a href="http://www.google.com" onclick="return OpenOrFocus(this, 'help');">Open</a> 

वर्क्स ठीक, दुर्भाग्य से फ़ायरफ़ॉक्स डिफ़ॉल्ट रूप से करने के लिए कोड में खिड़कियों "उठाना" विकल्प को अक्षम इसलिए focus() में कोई प्रभाव नहीं है वह ब्राउज़र - आसपास कोई काम नहीं मिला।

टेस्ट मामले यहाँ उपलब्ध है: http://jsfiddle.net/yahavbr/eVxJX/

+0

@richard: क्या ब्राउज़र? क्या यह jsfiddle नमूना में भी होता है? –

+0

उदाहरण के अनुसार http://jsfiddle.net/yahavbr/eVxJX/ क्रोम के लिए काम करता है फ़ायरफ़ॉक्स नहीं है। काम पर वापस जब यानी के साथ retest होगा। –

+0

यानी 6 के साथ परीक्षण किया गया और इसके साथ काम नहीं करता है। –

7

ऐसा लगता है कि आधुनिक ब्राउज़रों window.focus किसी मौजूदा विंडो के लिए आप की अनुमति नहीं देते। या कम से कम, यह उस विंडो फोकस नहीं देगा। (आईई 9 वास्तव में टैब को झपकी देगा, लेकिन अधिकांश अन्य ब्राउज़र केवल इसे लोड करते हैं लेकिन कोई संकेत नहीं देते कि उपयोगकर्ता का ध्यान नई विंडो पर खींचा जाना चाहिए।)

इसलिए, एक समाधान जो खुद को प्रस्तुत करता है वह विंडो को पहले बंद करना है, और उसके बाद तुरंत इसे फिर से खोलें। उदाहरण के लिए, declare the following function के लिए:

window.openOrFocus = function(url, name) { 
    if (!window.popups) 
     window.popups = {}; 
    if (window.popups[name]) 
     window.popups[name].close(); 
    window.popups[name] = window.open(url, name); 
} 

अब, आप HTML इस जैसे लिख सकते हैं:

<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/k3t6x/2/', 'window1')">Window 1</a><br /> 
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/KR6w3/1/', 'window2')">Window 2</a><br /> 

चूंकि यह खिड़की पहले बंद कर देता है, यह मज़बूती से नव निर्मित चाइल्ड विंडो को फोकस देता है।

यह समाधान भी window.popups नाम स्थान का उपयोग करता है, तो जावास्क्रिप्ट नमूने में इस बात का प्रयोग का नाम बदलने के लिए यदि आप popups नाम के एक समारोह हो या उन्हें ऐसा इसके साथ टकरा गए हैं।

कैविट: यह पोस्ट-बैक के बाद काम नहीं करता है। ऐसा इसलिए है क्योंकि एक बार जब आप वर्तमान पृष्ठ से दूर जाते हैं, तो यह अब बच्चे की खिड़कियों का मालिक नहीं है। इसलिए, यह अब उन्हें बंद नहीं कर सकता है। हालांकि, यह केवल target विशेषता का उपयोग करने के सामान्य (गैर-केंद्रित) व्यवहार में कमी करता है।

में परीक्षण किया: फ़ायरफ़ॉक्स 4, क्रोम 11, आईई 9
JsFiddle डेमो:http://jsfiddle.net/aqxBy/7/

1

यहाँ एक ही रास्ता जावास्क्रिप्ट विकलांग ग्राहकों के लिए वापस आने के साथ jQuery और एचटीएमएल 5 का उपयोग कर रहा है। यह प्रत्येक क्लिक पर पृष्ठों को फिर से लोड करेगा। परीक्षण और फ़ायरफ़ॉक्स और क्रोम में काम करता है।

<script> 
    $(document).ready(function() { 
     $('a[data-popup]').click(function(event) { 
      event.preventDefault(); 
      window.open(this.href, this.dataset['popup'], 'resizable,scrollbars').focus(); 
     }); 
    }); 
</script> 

<a href="https://stackoverflow.com/" target="_blank" data-popup="stackoverflow">Stack Overflow</a> 
<a href="https://superuser.com/" target="_blank" data-popup="superuser">Super User</a> 
<a href="https://serverfault.com/" target="_blank" data-popup="serverfault">Server Fault</a> 
संबंधित मुद्दे