【问题标题】:opening a new window based on the current url of the page根据页面的当前 url 打开一个新窗口
【发布时间】:2015-09-20 22:15:38
【问题描述】:

所以表面上我正在尝试制作一个按钮或链接,其目标取决于当前页面的 URL。我正在开发一个在 Ajax 窗口中打开不同项目的 Wordpress 投资组合网站,但我也希望能够从该窗口链接到单独的项目页面。例如,如果我单击标题为“Blue”的项目的缩略图,它将在 ajax 窗口中打开该项目,并且 url 更改为“www.website.com/#blue”。顺便说一下,相应项目页面的 url 将是“www.website.com/projects/blue”。想法是将按钮硬编码到 Ajax 窗口中并编写一个脚本,为项目页面生成正确的 URL,这样我的客户就不必复制粘贴按钮的代码并在每次发布时更新目标 URL项目。这就是我想出的,但我对 Jquery 或 Javascript 不是很好,我认为我的语法或脚本结构可能有问题。现在,当我按下按钮时没有任何反应。

首先,它在每个“/”处拆分 url,并从不同的字符串创建一个数组,然后从唯一的字符串中删除“#”,并使用新地址打开一个新窗口。

编辑 有一些语法错误,但仍然无法正常工作。关于这个新版本的任何想法:

$(".comment_button").click(function(){
var parse_url = window.location.href.split('/');
var project_name = parse_url[2].replace("#", "");
window.open("http://www.balletinform.com/projects/" + project_name);
});

【问题讨论】:

    标签: javascript jquery ajax wordpress button


    【解决方案1】:

    尝试使用a 元素?带有target="_blank" 属性?

    <a id="blue" href="www.website.com/projects/blue" target="_blank">blue</a>
    

    【讨论】:

    • 我不确定我是否正确理解了这个问题,但我也不确定问题来自window.open 方法,而是来自对 url 的解析。
    • @Kaiido "我不确定我是否正确理解了这个问题,但我也不确定问题来自 window.open 方法,而是来自对url。” 浏览器中的弹出窗口阻止程序阻止 window.open() ?请参阅 处的 OP“但它仍然无法正常工作。” 不确定“仍然无法正常工作”在描述什么?
    • 是的,这也可能是个问题。但是如果有弹出窗口拦截器,可能也会有在新选项卡中打开新窗口的选项,并且锚解决方案不会在新窗口中打开它。
    • @Kaiido 也许 OP 会插话
    【解决方案2】:

    如果我理解正确,您想要得到的是网址的#blue 部分。

    如果是这样,您可以使用window.location.hash

    你的函数看起来像window.open("http://www.balletinform.com/projects/" + window.location.hash.substring(1));

    您当前的功能是将 project_name 设置为 "www.balletinform.com" ([0]=&gt;"http:"; splitted(/); [1]=&gt;""; splitted('/'); [2]=&gt;"www.balletinform.com"; splitted('/'); [3]=&gt;"#blue").
    所以另一种解决方案是var project_name = parse_url[parse_url.length-1].replace("#", "");

    【讨论】:

    • 是的!就是这样。其实只是我自己想出来的。没有考虑到“http://”作为数组的一部分。我的代码也放错了地方,所以无论如何它根本没有执行。但我现在一切正常,感谢您的帮助!
    【解决方案3】:
    var new_url=""+(window.location.href).replace('#','projects/');
    window.open(new_url);
    

    尝试将 # 替换为 'projects/'

    【讨论】:

    • 这个解决方案只有在他确实从主页执行它时才有效,如果他已经在另一个子路径下,例如http://www.website.com/new_project/,它将把用户带到http://www.website.com/new_project/project_name
    • 这实际上应该也可以,代码只能通过点击ajax窗口中的按钮执行,其中url总是website.com/#project_name,它应该总是指向的新url是@ 987654322@.
    猜你喜欢
    • 2015-07-26
    • 2016-07-14
    • 2010-10-23
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多