首先,我是制作Chrome扩展程序的新手,所以不要以为我知道很多。对于扩展程序,我要求用户能够右键单击链接,选择上下文菜单项,并且扩展程序需要发送该链接的最终 URL。 / p>
特别是亚马逊联盟链接。例如,以下内容:
需要转换为:
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& ..... blah blah blah
我环顾四周,无法找到答案。我是SOL吗?
到目前为止我的代码非常基本:
//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"
]
}
就像我说的那样,我对此很陌生,所以我不确定如何继续。我想对"最终网址"进行一些解析。所以我可以向用户提供有关它的信息。 I.E.会员ID。但为此,我无法使用上面的缩短链接。
答案 0 :(得分:0)
由于重定向是服务器回复给您的响应,您可以阅读标题字段并查看您的初始网址重定向到的网址。
在这种情况下,我刚测试在Chrome中打开一个新标签页,然后打开“网络”标签并导航到您的初始网址。然后,在显示结果页面的完整URL之前,我看到了两个单独的重定向(http状态代码301)。
您也可以在代码中执行此操作,以便能够访问最终的URL。 :)