使用javascript

时间:2019-06-19 08:33:36

标签: javascript

我需要所有博客产品页面都显示在弹出窗口中。为了在弹出窗口中显示其URL,必须采用https://expample.com?/modal-link=blog_page_url的形式。 (我正在使用插件,这是必需的)
我想用JavaScript编写代码来检查URL。如果页面的URL包含单词“ product”,我想在URL:https://expample.com?/modal-link=之前加上前缀,以使其能够在弹出窗口中显示。 我正在使用以下代码:

if(window.location.href.indexOf("product") > -1) {
  var url = window.location.href;    
  url_new = 'https://example.com/?modal-link=' + url
} else {

}
window.location.href = url_new;

正在创建一个新的URL,但它导致添加无限的时间。 我应该怎么做?

关注的问题:(我应该为此提出一个新的问题吗?)

我想修改代码,以便在重定向期间不会重新加载页面。 我知道还有其他与此相关的帖子,例如How do I modify the URL without reloading the page?https://stackoverflow.com/questions/3338642/updating-address-bar-with-new-url-without-hash-or-reloading-the-pagebut,有人可以帮我修改此特定情况下的javascript代码吗? 我需要使用以下几行吗?

document.location.hash = 'afterhash';
history.pushState('data to be passed', 'Title of the page', '/test');

我不知所措,我的代码的哪一部分需要放在上面的行中。

3 个答案:

答案 0 :(得分:1)

您的递归缺少停止条件。例如,如果"some_product"包含"product",而您在其中添加了任何内容,则它仍将包含"product",例如"really_some_product""really_really_some_product"等。您可以看看这是怎么回事,无限递归。

因此,您需要告诉它在某个时刻停止,即新网址已经以您打算在原始网址之前添加的开头。

在此之后,由于在某些情况下我们不做任何更改,因此我们也不应重定向。

var url = window.location.href,
    prepend_to_url = "https://example.com/?modal-link=",
    url_new = false;

if (url.indexOf(prepend_to_url) == 0) {
    // url starts with what we prepend
    // so do nothing
} else if(url.indexOf("product") > -1) {
    url_new = prepend_to_url + url;
}

if (url_new) { // don't redirect unless we've done something above
    window.location.href = url_new;
}

上面代码的更简洁的版本可能看起来像这样:

var url = window.location.href,
    prepend_to_url = "https://example.com/?modal-link=",
    url_new = false;

if (url.indexOf(prepend_to_url) == -1  // url doesn't start with what we prepend
    && url.indexOf("product") > -1     // and our condition is met
) {
    url_new = prepend_to_url + url;
}

url_new && (window.location.href = url_new); // equivalent to an "if" statement

答案 1 :(得分:0)

您应该初始化url_new并将其更改为某些条件:

let url_new = window.location.href

if(window.location.href.indexOf("product") > -1) {
    url_new = 'https://example.com/?modal-link=' + window.location.href;
} 
window.location.href = url_new;

答案 2 :(得分:0)

您需要的是通过将url中的substrindex的{​​{1}}一起使用来获取?的查询参数部分

url