我需要所有博客产品页面都显示在弹出窗口中。为了在弹出窗口中显示其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');
我不知所措,我的代码的哪一部分需要放在上面的行中。
答案 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
中的substr
与index
的{{1}}一起使用来获取?
的查询参数部分
url