我对javascript(仅完成JAVA)了解不多,但是我没有对我发现的一些javascript代码(来自Google书签)进行黑客攻击。
以下是我的情况:我在浏览器中创建一个包含javascript而不是URL链接的书签。当我按下书签时,我希望它打开一个具有相同网址但有一些额外信息的新窗口。 所以说我在https://www.abcde.com/KnowYourABC并按下书签,然后它应该打开一个带有链接的窗口:https://www.abcde.com.DoYou/KnowYourABC - 所以“。你好”已经插入到第3个“/”之前
我有以下脚本:
javascript:(function(){
var a=window, b=document, c=encodeURIComponent,
url = b.location,
d = a.open(url, "bkmk_popup", "left="+
((a.screenX||a.screenLeft)+50)+",top="+
((a.screenY||a.screenTop)+50)+
",height=600px, width=1200px, resizable=1, alwaysRaised=1");
a.setTimeout(function(){d.focus()},300)
})();
到目前为止,它打开了一个具有相同网址的窗口。但我似乎无法在第3个“/”分割网址。试图获取反斜杠的索引以分割网址并插入“.DoYou”
i = url.indexOf("//",9)
然后窗口将无法打开。请帮帮我!
解
javascript:( function(){
var a=window;
b=document;
c=encodeURIComponent;
url = b.location;
var parts = window.location.href.split("/");
parts[2] += ".DoYou";
var newurl = parts.join("/");
a.open(newurl, "bkmk_popup","left="+((a.screenX||a.screenLeft)+50)+",top="+((a.screenY||a.screenTop)+50)+",height=600px,width=1200px,resizable=1,alwaysRaised=1"); a.setTimeout(function(){d.focus()},300);
})();
答案 0 :(得分:5)
可以使用一个简单的reg exp,使用window.location对象[host / search / etc]的部分或简单的拆分和连接来完成。
这是简单的拆分和连接解决方案。
var parts = window.location.href.split("/");
parts[2] += ".DOYOU";
var newStr = parts.join("/");
console.log(newStr);
答案 1 :(得分:3)
您无需转义/
(正斜杠)。
i = url.indexOf("/",9)
P.S。转义字符通常是反斜杠(\
)。
答案 2 :(得分:0)
与接受的答案类似,如果您不是真的需要找到索引,但想要在其附近放置某些内容,则可以使用string.replace(replacedtext, newtext)
和RegEx。
对于您的网址示例,如果您想在第一个斜杠之前添加文字,并在两边添加单词字符,那么您可以
url = url.replace(/(\w(?=\/\w))/, '$1' + '.DoYou');
$1
插入第一个带括号的子匹配字符串(有关$
的更多说明,请参阅here)。
示例强>
和你的问题一样,我想做同样的事情,除了在同一个窗口,所以我做了:
javascript:void(location.href=location.href.replace(/(\w(?=\/\w))/,'$1'+'.DoYou'))
将此作为书签,我只需点击书签即可转到我想要的页面。