2017-07-20 1 views
0

Ich schreibe meine erste Chrome-Erweiterung, bei der es sich um einige Links zu geöffneten URLs handelt. Man öffnet eine Site über JavaScript und die andere ist eine fest codierte Verbindung. Keine Arbeit. Ich bin mir nicht sicher, was ich hier falsch mache.Öffnen Sie eine URL in der Chrome-Erweiterung

manifest.json

{ 
    "manifest_version": 2, 

    "web_accessible_resources": [ 
    "popup.html", "popup.js" 
    ], 

    "name": "Open URL", 
    "description": "Opens a URL.", 
    "version": "1.0.0", 

    "permissions": ["tabs"], 

    "browser_action": { 
     "default_icon": "icon.png", 
     "default_popup": "popup.html", 
     "default_title": "Open a URL" 
    } 
} 

popup.html

<!DOCTYPE html> 
<html> 

<head> 
    <title>Open URL</title> 
    <script src="popup.js"></script> 
</head> 

<body style="width: 100px;"> 
    <p>Open URL</p> 
    <p><a href="javascript:OpenURL('http://www.google.com')">Google</a></p> 
    <p><a href="http://www.stackoverflow.com">Stack Overflow</a></p> 
</body> 

</html> 

popup.js

function OpenURL(location) { 
    chrome.tabs.create({ url: location }); 
} 
+0

Inline js funktioniert nicht in Chrome-Erweiterungen Seiten. Siehe [OnClick-Ereignis funktioniert in meiner Chrome-Erweiterung nicht] (// stackoverflow.com/a/29735177) – wOxxOm

+0

Hinweis: Diese Frage enthält tatsächlich zwei Probleme: A) die Verwendung von Inline-JavaScript in einem HTML-Popup und Verwendung eines Links zu einer Nicht-Erweiterungs-URL ohne 'target =" _ blank "'. A) Wird von vielen doppelten Fragen abgedeckt, einschließlich [Das Popup-Fenster für die Chrome-Erweiterung funktioniert nicht, Click-Ereignisse werden nicht verarbeitet] (https://stackoverflow.com/q/17601615). Problem B, ich habe kein Duplikat gefunden für. Diese Art von Situation ist der Grund, warum Stack Overflow-Fragen eine Frage pro Frage sein sollen. Wenn das nur A wäre, könnten wir das als Duplikat schließen. Wenn es nur B wäre, (Fortsetzung) – Makyen

+0

könnte die Frage aufgezogen und als Duplikat-Ziel verwendet werden, sollte das Problem erneut gestellt werden. Mit beiden Problemen in einer einzigen Frage macht es leider die Verwendung dieses Doppelziels verwirrend, es sei denn, jemand fragt nach beiden Problemen. Ein anderes Mal fragen Sie bitte nur ein Thema pro Frage. Wenn es nicht bereits eine Antwort gibt, die teilweise ungültig wäre, würde ich vorschlagen, die Frage nur auf das '_blank'-Problem zu bearbeiten, aber das ist unpassend, wenn dies eine Antwort ungültig machen würde. – Makyen

Antwort

0

mir erklären lassen:

TYP 1: Plain Anchor Link-

Lösung: Bitte fügen Sie das Zielattribut ("_ blank"), um es um die URL in einem neuen Pop-up zu öffnen. die folgenden Versuchen:

<a href="http://www.stackoverflow.com" target="_blank">Stack Overflow</a> 

TYP 2: Anchor Link mit Javascript-Funktion Handler

Ausgabe: Inline-Skriptausführungen werden in Erweiterungen verboten. Sie müssen also explizit damit umgehen und das Popup für URLs öffnen. Versuchen Sie diese Schritte:

Schritt 1: Fügen Sie ein #id zu diesem Anker Link

<p><a href="http://www.google.com" id="linkId123">Google</a></p> 

Schritt 2: Griff, der Anker-Link mit der ID und rufen Sie die Funktion popupWindow(). Setzen Sie diese in Ihre Inhaltsskripte ein.

$(function() { 
    $('#linkId123').click(function() { 
     popupWindow($(this).attr('href'), 'Title',"800px","600px"); 
    }); 
}); 

function popupWindow(url, title, w, h) { 
    var left = (screen.width/2) - (w/2); 
    var top = (screen.height/2) - (h/2); 
    var win = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left); 
    win.focus(); 
} 

Ich testete diese beiden Lösungen und es hat gut funktioniert. Ich hoffe es hilft!

+0

Hallo Veeresh. TYPE 1 funktioniert gut, aber TYPE 2 öffnet die URL in Chrome nicht. Ich bin mir nicht sicher, warum es in meinem Browser nicht funktioniert. Ich habe sogar versucht, popupWindow (...) durch window.open ('http://www.google.com') zu ersetzen, was auch nicht funktioniert hat. – UltraJ

+0

@UltraJ, Sie haben ein ungültiges URL-Format mit window.open verwendet. Es sollte mit "http" beginnen. Ich habe es erneut getestet und funktionierte einwandfrei, indem ich diese URL öffne ("http://www.google.de").com ") in einem neuen Fenster. Sie können dies auch in der Browser-Konsole überprüfen. –