2012-08-30 16 views
12

javascriptWindows Phone 7 ब्राउज़र में एक नई विंडो या टैब खोलना संभव है?विंडोज फोन 7 जावास्क्रिप्ट में जावास्क्रिप्ट के माध्यम से एक नई विंडो या टैब कैसे खोलें

window.open समर्थित नहीं है और न ही target='_blank' है।

क्या मुझे यहां कुछ याद आ रही है? यह मूल सुविधा आईफोन और एंड्रॉइड पर ठीक काम करती है। विंडोज फोन 7 में यह कैसे काम कर सकता है इस पर कोई विचार है?

+0

ब्राउज़र सेटिंग्स में, 'एक नए टैब में लिंक खोलने' का विकल्प है। मुझे संदेह है कि ऐप द्वारा ओवरराइड किया जा सकता है। – Osiris

उत्तर

27

विंडोज फोन 7 पर यह प्रोग्रामेटिक रूप से संभव नहीं है। यह सब उपयोगकर्ताओं के हाथ में है।

का हवाला देते हैं करने के लिए एक Microsoft employee:

"एक उपयोगकर्ता दोहन और के लिए लिंक पकड़े संदर्भ मेनू लेकिन एक लंगर पाने या स्क्रिप्ट एक नया खिड़की लक्षित करने का अनुरोध करके एक नया टैब में एक कड़ी खोल सकते हैं नजरअंदाज कर दिया है

इस के लिए कई कारण हैं:।।

  • पार खिड़की संचार समर्थित नहीं हैं
  • विंडोज फोन में केवल ब्राउज़र का एक उदाहरण है इसलिए टैब के रूप में नई "विंडोज़" को खोला जाना है।
  • ब्राउज़र का अनुभव पूर्ण स्क्रीन है, इसलिए उपयोगकर्ता के पास कोई अच्छा दृश्य क्यू नहीं है कि तब तक एक नए टैब में स्थानांतरित हो गया है जब तक कि वे इसकी मांग नहीं करते हैं।
  • नेविगेट "वापस" एक नया टैब में ब्राउज़र जो होगा उपयोगकर्ता को भ्रमित करता है, तो उन्हें पता नहीं था एक नया टैब बनाया गया था बाहर निकालता है। "
+0

यही वह है जिसे मैं डरता था। पुष्टि करने के लिए धन्यवाद! – bmurmistro

+0

महान उत्तर। क्या कोई जानकारी गीली है क्या यह विंडोज फोन 8 के लिए एक ही मामला है? – dan

+0

क्या यह सत्यापित करने के लिए कोई कामकाज है कि कोई नई विंडो खोला जा सकता है, तो अगर नहीं तो फ़ॉलबैक विधि का उपयोग किया जा सकता है? –

3

आप इस सुविधा जोड़ने की कोशिश कर रहे हैं, तो इन-एपी ब्राउज़र नियंत्रण के लिए, मैं आपको एक तरफ सुझाव दे सकता हूं।

आपको प्रत्येक वेबपृष्ठ पर जावा-स्क्रिप्ट इंजेक्ट करना होगा ब्राउज़र ब्राउज़र सफलतापूर्वक पृष्ठ को लोड करने में सक्षम है। जावा-स्क्रिप्ट में window.extern का उपयोग करें। अपने कोड में ScriptNotify फ़ंक्शन का आह्वान करने के लिए सूचित करें। उपयुक्त संदेश का पता लगाने पर ब्राउज़र नियंत्रण का एक नया उदाहरण बनाएं और इसे एक सरणी या सूची में जोड़ें। इस प्रकार आप इन-ऐप ब्राउज़र नियंत्रण के लिए नई टैब सुविधा का अनुकरण कर सकते हैं।

जे एस कोड इस String NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

कौन सा addnewtab के लिए browser.InvokeScript("eval", NEW_TAB_FUNCTION);

का उपयोग कर इंजेक्ट किया जा सकता ScriptNotify जांच में की तरह हो सकता है इंजेक्ट किया जा करने के लिए (IsScriptEnabled = True रखने)

void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e) 
    { 
     if (e.Value == "addnewtab") 
     { 
      //do work here 
     } 
    } 

ध्यान दें कि मैं अधिरोहित है जेएस में window.open फ़ंक्शन एक फ़ंक्शन के साथ जो उपयोगकर्ता इनपुट के अधिसूचित होने के लिए हर बार एक नए वेबपृष्ठ पर इंजेक्शन दिया जाएगा।

यह भी ध्यान दें कि यह केवल वेबब्रोसर नियंत्रण के लिए काम करता है और बाहरी ब्राउज़र नहीं।, अगर विफल रही

window.open 

रिटर्न अशक्त ताकि मामले में मैं यह एक ही विंडो में खुलेगा:

+0

प्रतिक्रिया के लिए धन्यवाद। दुर्भाग्यवश, मैं बस "बाहरी" ब्राउज़र से निपट रहा हूं। – bmurmistro

+0

ठीक है उस मामले में दूसरा जवाब मान्य साबित होता है :) –

0

मेरे वैकल्पिक हल इस समस्या को सरल है

var win = window.open(href, '_blank'); 
    if(!win || win==null){ 
     window.location.href = href; 
    }else{ 
     win.focus();  
    } 

है जो एक अच्छा अभ्यास एक है करने के लिए वैसे भी गिरावट ...

+0

हे टॉमर, यह विंडोज फोन 10 एज ब्राउज़र में काम नहीं करता है। कोई उपाय? –

+0

@ अशुतोष झा मुझे लगता है कि इसे खिड़की के आकार से करना है। यहां देखें: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11026637/ और यहां: https://answers.microsoft.com/en-us/insider/forum/insider_internet- insider_spartan-insiderplat_pc/windows-एज-करता-नहीं-खुली-new-खिड़की-सीधे/272c607a-253F-47a4-8ec7-4236d30940a1 –

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