2012-01-18 36 views
33

Tôi đang làm một tiện ích của Chrome và tôi được trợ giúp trong bài đăng này here.Tiện ích của Chrome; mở một liên kết từ popup.html trong tab mới

Vấn đề của tôi bây giờ là làm thế nào để mở một tab mới của chrome có URL như liên kết tôi nhấp vào trong popup.html. Tôi đã cố gắng làm như một người nào đó đề xuất trong câu trả lời của họ trong câu hỏi tương tự khác như đặt thuộc tính <a> 'target thành _blank nhưng kết quả duy nhất là chrome không mở tab mới nhưng trong tab mới là popup.html của tôi.

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?

Cảm ơn.

+0

Bản sao có thể có của [Cách tạo liên kết popup.html mở trong tab?] (Http: // stackoverflow.com/questions/4549869/cách-make-popup-html-links-open-in-tab) – rogerdpack

Trả lời

57

Bạn nên sử dụng mô-đun chrome.tabs để mở thủ công liên kết mong muốn trong tab mới. Hãy thử sử dụng đoạn mã jQuery này trong popup.html của bạn:

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

Không phải thuộc tính của tôi là URL 'href'. Bytheway nó không hoạt động trong cả hai trường hợp. Nó mở ra cho tôi một tab với url này: chrome-extension: // ceapmkdonphjngfdcjcoahdmkenpbgpn /? Action = read & idnotizia = 71189 – Advicer

+0

Bạn nói đúng về 'href', xin lỗi vì điều đó - tôi đã sửa câu trả lời của mình. Bạn cần cung cấp đầy đủ url trong href nếu bạn muốn nó mở. Hiện tại, bạn có các liên kết như thế này ' 'thay đổi chúng thành URL đầy đủ' '. –

31

Xem nhận xét của tôi https://stackoverflow.com/a/17732609/1340178


tôi đã cùng một vấn đề và đây là cách tiếp cận của tôi:

  1. Tạo popup. html có liên kết (và các liên kết không hoạt động khi được nhấp khi Chrome chặn chúng).
  2. Tạo popup.js và liên kết nó trong trang: <script src="popup.js" ></script>
  3. Thêm mã sau đây để 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}); 
          }; 
         })(); 
        } 
    }); 
    

Đó là tất cả, liên kết nên làm việc sau đó.

+0

giải pháp tốt đẹp, cảm ơn –

+0

Hoàn hảo Cảm ơn. – user3256143

18

Nếu bạn không muốn sử dụng JQuery, chèn này vào popup.js của bạn và nó sẽ làm cho tất cả các liên kết của bạn mở trong một tab mới khi nhấp

Nhớ khai các "tab" phép trong manifest .json

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

Tốt hơn nhiều so với phiên bản jQuery, cảm ơn! – juanignaciosl

+1

Tôi khuyên bạn nên sử dụng quyền "activeTab" thay vào đó: https://developer.chrome.com/extensions/activeTab –

2

Các câu trả lời khác hoạt động. Cho đầy đủ, bạn cũng có thể just addtarget="_blank"

Hoặc nếu bạn có muốn "bằng tay" thêm các liên kết đặc biệt, đây là một cách (dựa trên câu trả lời khác đã ở đây):

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

Tôi đã gặp vấn đề tương tự. Có vẻ như giải pháp của Konrad sẽ hoạt động, nhưng nó đã mở nhiều tab cùng một lúc. Điều này chỉ xảy ra sau khi cài đặt tiện ích mở rộng đầu tiên. Vì vậy, tôi đã thay đổi nó để

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

và tất cả đang làm việc như mong đợi.

Các vấn đề liên quan