2016-05-07 4 views
0

Zunächst einmal, ich bin neu in der Herstellung von Chrome-Erweiterungen, also nicht davon ausgehen, dass ich eine ganze Menge weiß. Für die Erweiterung muss der Benutzer in der Lage sein, mit der rechten Maustaste auf einen Link zu klicken, einen Kontextmenüeintrag auszuwählen, und die Erweiterung muss die endgültige URL dieses Links gesendet werden.Holen Sie sich die End-URL nach der Umleitung in der Chrome-Erweiterung

Speziell Amazon Affiliate-Links. So zum Beispiel die folgenden:

http://amzn.to/1VO7dlp

brauchen würde, um zu erhalten umgewandelt:

http://www.amazon.com/gp/product/0470281731/ref=as_li_ss_tl?ie=UTF8&fpl=fresh&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1&pf_rd_r=0WRZW1V7VVDJWS54WCM4& ..... bla bla bla

Ich habe schaute mich um und ich kann nicht finden irgendwelche Antworten. Bin ich SOL?

Der Code, den ich bisher habe, ist ziemlich einfach:

//background.js 

chrome.runtime.onInstalled.addListener(function() { 
chrome.contextMenus.create({ 
    title: 'Add this Link', 
    id: 'linkContext', 
    contexts: ['link'], 
}); 
}); 

chrome.contextMenus.onClicked.addListener(function(data, tab) { 
    if (data.menuItemId === "linkContext") { 
     chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
     chrome.tabs.sendMessage(tabs[0].id, 
      { 
      linkUrl: data.linkUrl, 
      }, 

      function(response) { 
      alert(response.host); 
      }); 
     }); 
    } 
}); 


chrome.runtime.onMessage.addListener(

//content_script.js 

function(request, sender, sendResponse) { 
    if (request.linkUrl){ 

     pathArray = request.linkUrl.split('/'); 
     protocol = pathArray[0]; 
     host = pathArray[2]; 
     url = protocol + '//' + host; 

     sendResponse({host: host}); 
    } 
}); 

//manifest.json 

{ 
    "name": "jQuery DOM", 
    "manifest_version": 2, 
    "version": "1.0", 
    "description": "Manipulate the DOM when the page is done loading", 
    "browser_action": { 
    "name": "Manipulate DOM", 
    "icons": ["icon.png"], 
    "default_icon": "icon.png" 
    }, 

    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 

    "permissions": [ 
    "contextMenus" 
    ], 

    "content_scripts": [ { 
    "js": [ "jquery.min.js", "content_script.js" ], 
    "matches": [ "http://*/*", "https://*/*"] 
    }], 

    "web_accessible_resources":[ 
    "menu.html", 
    "menu.css" 
    ] 
} 

Wie ich schon sagte ich dies ziemlich neu bin, so bin ich nicht sicher, wie geht es weiter? Ich möchte die "letzte URL" analysieren, damit ich dem Benutzer Informationen darüber präsentieren kann. I.E. die Partner-ID Dafür kann ich den verkürzten Link von oben nicht verwenden.

+0

Sie können versuchen, den folgenden Dienst: http://unshorten.it/api/documentation – rsanchez

+0

Ich denke, das ist, was ich tun muss, bei weiterer Überprüfung denke ich, dieses Problem ist unlösbar mit reinem JS/jQuery. Wenn Sie das als Antwort hinzufügen, werde ich es als korrekt markieren. –

Antwort

0

Da Redirects eine Antwort des Servers an Sie ist, können Sie das header-Feld lesen und sehen, auf welche URL Ihre ursprüngliche URL weitergeleitet wird.

In diesem Fall habe ich gerade getestet, um eine neue Registerkarte in Chrome zu öffnen, und öffnete die Registerkarte Netzwerk und navigierte zu Ihrer ursprünglichen URL. Dann sah ich zwei separate Weiterleitungen (http Statuscode 301), bevor die vollständige URL der resultierenden Seite angezeigt wurde.

Dies können Sie auch im Code tun, um zur letzten URL zu gelangen. :)

+0

Wie ich schon sagte, bin ich neu, würde es Ihnen etwas ausmachen, ein Codebeispiel zu geben? Es wäre nicht nur für mich hilfreich, sondern auch für zukünftige Googler, die hier landen. –

+0

Mein Fehler, ich könnte zu schnell auf diese Frage geantwortet haben, es scheint, als könnte es schwierig sein, dies über XMLHttpRequest oder etwas Ähnliches zu tun. In diesem Thread finden Sie weitere Informationen: http://stackoverflow.com/questions/16430901/get-final-url-from-xhr-object-after-redirect – MunchyYDL

Verwandte Themen