使用jQuery在页面加载时将字符串添加到url?

时间:2015-04-17 15:12:15

标签: javascript jquery url

我正在尝试在页面加载时将此特定字符串添加到我的网址末尾:

?aa_campaign = f45632

http://examplesite.com/test.html

用于营销和跟踪。

我试过这个:

if window.location.href.indexOf("http://examplesite.com/test.html") {
  window.location = "http://examplesite.com/test.html?aa_campaign=f45632";
}

直接上升不起作用,但这个想法是我正在寻找的。有什么想法吗?

4 个答案:

答案 0 :(得分:8)

不需要jQuery,你可以在大多数"现代"中使用纯JavaScript来做到这一点。浏览器,即:

if (window.location.href  === "http://examplesite.com/test.html") {
    window.history.pushState("object or string", "Title", "http://examplesite.com/test.html?aa_campaign=f45632");
}

pushState()方法

  

pushState()接受三个参数:状态对象,标题(即   当前被忽略)和(可选)URL。让我们分析一下   这三个参数更详细:

state object — The state object is a JavaScript object which is associated with the new history entry created by pushState(). Whenever
     

用户导航到新状态,触发popstate事件,并且   事件的state属性包含历史记录条目的副本   国家对象。

The state object can be anything that can be serialized. Because Firefox saves state objects to the user's disk so they can be restored
     

用户重启浏览器后,我们将大小限制为640k   状态对象的序列化表示上的字符。如果你   传递序列化表示大于的状态对象   这个to pushState(),该方法将抛出异常。如果你需要   比这更多的空间,我们鼓励您使用sessionStorage和/或   localStorage的。

title — Firefox currently ignores this parameter, although it may use it in the future. Passing the empty string here should be safe
     

反对将来对方法的更改。或者,你可以传递一个   你正在移动的州的简称。

URL — The new history entry's URL is given by this parameter. Note that the browser won't attempt to load this URL after a call to
     

pushState(),但它可能会稍后尝试加载URL   用户重启浏览器后。新URL不需要   绝对;如果它是相对的,则相对于当前URL进行解析。   新网址必须与当前网址的来源相同;除此以外,   pushState()将抛出异常。此参数是可选的;如果它   没有指定,它已设置为文档的当前网址。

SRC:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

答案 1 :(得分:3)

您可以将字符串添加到window.location.search,以获得更通用的解决方案。

if (location.origin + location.pathname === 'your url here') {
  location.search += 'additional data here';
}

这种方法的优点是您可以将此代码应用于多个页面,同一代码的更改较少。

请注意,这会导致页面重新加载,这可能不是用户体验的最佳选择。由于您说您正在执行此操作以进行跟踪,因此您可以通过将带有新网址的图像附加到DOM来ping页面。像这样:

var pinger = new Image(0,0); // keep the size of the image 0
pinger.src = 'changed url here, with the new query param appended';
document.body.appendChild(pinger); // ping sent
pinger.parentNode.removeChild(pinger); // remove the node when ping is sent

希望有所帮助:)

答案 2 :(得分:1)

此版本将保留任何现有的查询字符串,并正确附加您的" aa_campaign = f45632"参数字符串。

var w = window.location;
if (w.search.indexOf("aa_campaign") == -1) {
    window.location = w + (w.search.indexOf("?") == -1 ? "?" : "&") + "aa_campaign=f45632";
}

示例:

答案 3 :(得分:0)

试试这个:

if (window.location.href.indexOf("http://examplesite.com/test.html" !== -1) {
  window.location = "http://examplesite.com/test.html?aa_campaign=f45632";
}