我们尝试在iframe的源上使用GA中的linker.decorate。大致是这样的:
<iframe id="whatever" class="whateveriframe" src="https://www.whatever.com/#/whatever" frameborder="0" hideadminborder="false" scrolling="no" style="width: 1px; min-width: 100%"></iframe>我们尝试用来修改SRC的函数是:
function() {
return function() {
try {
var gobj = window[window.GoogleAnalyticsObject];
var iframe = document.querySelector('.whateveriframe');
var tracker, linker;
if (gobj) {
tracker = gobj.getAll()[0];
linker = new window.gaplugins.Linker(tracker);
iframe.src = linker.decorate(iframe.src);
}
} catch(e) {}
}
}当返回的输出混淆了被追加字符串的位置时。因此,它将输出:
https://www.whatever.com/?q=valuesadded#/whatever而不是我们想要的-那就是
https://www.whatever.com/#/whatever?q=valuesadded它不应该只是将GET变量附加到src字符串的末尾吗?当我输出iframe.src时,它是完整的网址,而不仅仅是域名。
如果只是把它附加到末尾,我会遗漏什么?
发布于 2019-02-13 20:23:43
如果查询参数添加在散列标记之后,它将被忽略(即,该值将成为片段标识符的一部分,而不是查询参数)。这就是链接器被添加在"#“之前的原因。
这样做的原因基本上是历史的--链接中的散列标记最初是表示页面内的链接,并且不会改变页面内容(1)。直到后来,它们才成为Url的“合法”部分(主要是在SPA中),而GA还没有完全跟上这一事实。
但是,允许使用片段标识符而不是将链接器添加为查询参数的linker methods have a "useAnchor" boolean parameter。这应该(尚未测试)允许您将链接器添加到URl的"#“部分。
系统作为客户端间接引用的主要形式,
仅由资源所有者间接提供的资源。因此,片段标识符不在方案特定的中使用
URI的处理;取而代之的是,片段标识符被分隔
从取消引用之前的URI的其余部分开始,因此
https://stackoverflow.com/questions/54657993
复制相似问题