在浏览器操作中修改当前选项卡的URL的TLD
Modify TLD of URL of current tab in a browser action
我正在尝试进行浏览器操作,在URL的".com"(或任何TLD)和"/foo.bar"部分之间插入一些文本。
例如,如果我在"stackoverflow.com/questions"上,我希望能够按下浏览器中的一个按钮,并自动重定向到"stackoverlow.com/my.text/questions"
按钮显示在正确的位置(看起来很漂亮),但什么也没用。
我根据这个例子对代码进行了建模。这就是我目前拥有的:
manifest.json
{
"manifest_version": 2,
"name": "My Extension",
"version": "1.0",
"background": { "scripts": [ "insert.js" ] },
"browser_action": { "default_icon": "my_icon.png" },
"permissions": [ "tabs", "http://*/*", "https://*/*" ]
}
和insert.js
chrome.browserAction.onClicked.addListener(function(tab) {
var url = tab.url;
var tld = /'.'w+'//;
var url2 = tld.exec(url);
var break = url.indexOf(url2);
var break1 = break + url2[0].length - 1;
var url1 = url.substring(0, break1);
var url3 = url.substring(break1, url.length);
var mytext = ".my.text";
var urlNew = url1 + mytext + url3;
chrome.tabs.update(tab.id, {url: urlNew});
});
我可能遗漏了一些非常明显的东西,但我基本上对JavaScript一无所知。
我确实通过在http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_test2所以我知道它匹配正确的正则表达式,并吐出正确的字符串。
我四处搜索了一段时间,找不到任何可以指导我的东西。为什么我发布的示例有效,但我的代码无效?
如果您想学习任何东西,请忘记w3schools.com,并使用信誉良好的来源,如MDN。
话虽如此,在浏览了您的代码后,我已经看到了一个明显的错误:
var url = tab.url;
var tld = /'.'w+'//;
var url2 = tld.exec(url);
var break = url.indexOf(url2);
正则表达式的exec方法返回一个数组(如果找不到匹配项,则返回null
)
字符串的indexOf方法采用字符串。这些论点不匹配,所以你得到的结果可能与你的预期不匹配。
我正在尝试制作一个浏览器操作,在URL的".com"(或任何TLD)和"/foo.bar"部分之间插入一些文本。
然后使用字符串的替换方法:
chrome.browserAction.onClicked.addListener(function(tab) {
var url = tab.url;
var urlNew = url.replace(/('.'w+)('/)/, '$1.my.text$2');
chrome.tabs.update(tab.id, {url: urlNew});
});
"$1"与捕获的组'.'w+
匹配,
"$2"与捕获的组'/
匹配。
注意:'w+
与[a-zA-Z0-9_]+
匹配,而TLD也可以包含连字符("-")(请参阅https://data.iana.org/TLD/tlds-alpha-by-domain.txt)。如果你也想匹配这些URL,你可能需要调整你的常规支出
- 通过js在新选项卡中有条件地打开url
- 根据select选项元素将表单重定向到不同的URL
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如何在现有的浏览器选项卡中打开url
- Google Script HtmlService,通过多个选项卡复制URL变量
- 使用Javascript根据URL中的关键字隐藏下拉选项
- 如何在新选项卡中而不是在新窗口中打开URL
- 如何重定向当前选项卡'Chrome扩展中的url
- 访问url[材质Ui+选项卡]时,Angular Ui路由器未加载视图
- 在Chrome中的适当选项卡/窗口中打开URL
- 如何使用jQuery更改当前URL并在单击时打开新选项卡
- 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中URL的最后一位
- 根据选择选项元素将表单重定向到不同的URL,并在电子邮件中获取表单详细信息
- 获取当前URL,替换部分路径名,然后在空白选项卡中打开
- 从Javascript中的Chrome扩展获取选项卡url
- 在浏览器操作中修改当前选项卡的URL的TLD
- 使用javascript在chrome浏览器的新选项卡中以程序方式打开URL
- 使用 Javascript 根据 URL 哈希设置所选选项
- 如何从用户选项url匹配在Content_Script
- Firefox插件"RequirementError:选项"url"是无效的!”当发出HT