2012-01-18 27 views
33

मैं क्रोम एक्सटेंशन कर रहा हूं और मुझे इस पोस्ट here में मदद मिली है।क्रोम एक्सटेंशन; पॉपअप.html से एक नए टैब में एक लिंक खोलें

मेरी समस्या यह है कि क्रोम का एक नया टैब कैसे खोलें, जिस पर यूआरएल के रूप में मैंने popup.html पर क्लिक किया था। मैंने की विशेषता target से _blank पर सेट करने जैसे अन्य समान प्रश्नों में उनके उत्तरों में सुझाए गए किसी भी व्यक्ति की तरह करने की कोशिश की लेकिन एकमात्र परिणाम यह है कि क्रोम एक नया टैब खोलता है लेकिन नए टैब में मेरा popup.html है।

कोई विचार यह कैसे हल करें?

धन्यवाद।

+0

संभावित डुप्लिकेट [पॉप में पॉपअप.html लिंक कैसे खोलें?] (Http: // stackoverflow।कॉम/प्रश्न/4549869/कैसे-टू-मेक-पॉपअप-एचटीएमएल-लिंक-ओपन-इन-टैब) – rogerdpack

उत्तर

57

आपको chrome.tabs मॉड्यूल का उपयोग किसी नए टैब में वांछित लिंक मैन्युअल रूप से खोलने के लिए करना चाहिए। अपने popup.html में इस jQuery स्निपेट का उपयोग कर प्रयास करें:

$(document).ready(function(){ 
    $('body').on('click', 'a', function(){ 
    chrome.tabs.create({url: $(this).attr('href')}); 
    return false; 
    }); 
}); 
+0

क्या यह एक विशेषता नहीं है जिसे मैंने URL 'href' के रूप में रखा है। वैसे भी यह दोनों मामलों में काम नहीं करता है। यह मुझे इस यूआरएल के साथ एक टैब खोलता है: क्रोम-एक्सटेंशन: // ceapmkdonphjngfdcjcoahdmkenpbgpn /? Action = read & idnotizia = 71189 – Advicer

+0

आप 'href' के बारे में सही हैं, इसके लिए खेद है - मैंने अपना जवाब तय किया। यदि आप इसे खोलना चाहते हैं तो आपको href में पूरा यूआरएल आपूर्ति करने की आवश्यकता है। वर्तमान में आपके पास इस तरह के लिंक हैं '' उन्हें पूर्ण URL में बदलें ' '। –

31

देखें मेरी टिप्पणी https://stackoverflow.com/a/17732609/1340178


मैं एक ही मुद्दा था और यह मेरा दृष्टिकोण था:

  1. पॉपअप बनाएँ। लिंक के साथ एचटीएमएल (और क्रोम ब्लॉक के रूप में क्लिक किए जाने पर लिंक काम नहीं कर रहे हैं)।
  2. popup.js बनाएँ और पेज में लिंक: <script src="popup.js" ></script>
  3. popup.js लिए निम्न कोड जोड़ें:

    document.addEventListener('DOMContentLoaded', function() { 
        var links = document.getElementsByTagName("a"); 
        for (var i = 0; i < links.length; i++) { 
         (function() { 
          var ln = links[i]; 
          var location = ln.href; 
          ln.onclick = function() { 
           chrome.tabs.create({active: true, url: location}); 
          }; 
         })(); 
        } 
    }); 
    

बस इतना ही, लिंक कि उसके बाद काम करना चाहिए।

+0

अच्छा समाधान, धन्यवाद। –

+0

बिल्कुल सही। धन्यवाद। – user3256143

18

आप JQuery का उपयोग नहीं करना चाहते हैं, तो आपके popup.js में इस डाल सकते हैं और जब

के लिए याद रखें क्लिक किया तो यह आपके सभी एक नए टैब में खोलें लिंक कर देगा घोषक प्रकट में "टैब" अनुमति .json

window.addEventListener('click',function(e){ 
    if(e.target.href!==undefined){ 
    chrome.tabs.create({url:e.target.href}) 
    } 
}) 
+0

JQuery संस्करण से काफी बेहतर, धन्यवाद! – juanignaciosl

+1

मैं इसके बजाय "activeTab" अनुमति का उपयोग करने का सुझाव दूंगा: https://developer.chrome.com/extensions/activeTab –

2

अन्य उत्तरों काम करते हैं। पूर्णता के लिए, आप भी just addtarget="_blank"

कर सकते हैं या यदि आप "मैन्युअल" विशेष रूप से लिंक जोड़ने के लिए चाहते हैं, तो यहां एक तरह से (अन्य उत्तर पर पहले से ही यहाँ आधार पर) है:

popup.html

<a id="index_link">My text</a>. 

popup.js

document.addEventListener('DOMContentLoaded', function() { 
    var y = document.getElementById("index_link"); 
    y.addEventListener("click", openIndex); 
} 

function openIndex() { 
chrome.tabs.create({active: true, url: "http://my_url"}); 
} 
0

मैं एक ही समस्या थी। कोनराड के समाधान की तरह काम किया, लेकिन यह एक बार में कई टैब खोला। यह केवल पहले एक्सटेंशन स्थापित करने के बाद हुआ था। तो मैंने इसे

if (e.target.classList.contains("a-link")) { 
    chrome.tabs.create({url: $(e.target).attr('href')}); 
    return false; 
} 

और सभी उम्मीद के अनुसार काम कर रहे हैं।

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