提问人:SLLegendre 提问时间:6/28/2023 更新时间:6/28/2023 访问量:83
解构 Microsoft Advertising 的 bing uetq 标签,以便将其与 angular universal 和 renderer2 一起使用
Deconstruct bing uetq tag for microsoft advertising, in order to use it with angular universal and renderer2
问:
预期结果:
在用户接受跟踪 cookie 之后,因此调用了此问题的核心方法:必应脚本的加载方式与 TypeScript 中的 angular(通用)配合得很好
输入:
我从微软广告页面得到了这个标签。
<script>(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:"123456789", enableAutoSpaTracking: true};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");</script>
我试过什么:
我已经解构了类似于这个答案的代码,并将其放入服务中:
private setMsftScript(renderer: Renderer2) {
const url = "//bat.bing.com/bat.js";
const uetq = "uetq"
window[uetq] = window[uetq] || [];
const f = function () {
var o = { ti: "123456789", enableAutoSpaTracking: true };
o['q'] = window[uetq];
if (window["UET"]) window[uetq] = new window["UET"](o) || [];
window[uetq].push("pageLoad");
}
const script = renderer.createElement('script');
renderer.setAttribute(script, 'id', 'microsoft');
renderer.setProperty(script, 'type', 'text/javascript');
renderer.setProperty(script, 'async', true);
renderer.setProperty(
script,
'src',
url
);
renderer.appendChild(document.head, script);
f();
};
这应该使用 renderer2 将脚本放入头部,建议用于 angular afaiu。
问题
我还没有完全掌握简单地称为 f() 的函数是怎么回事。它在加载脚本时调用一次(“onload”),但当它的 readyState 发生变化时(我在网上找不到有关脚本元素的 readyState 的任何信息),并且它似乎还对文档本身的就绪状态进行了一些检查(它检查了我在文档中找不到的“loaded”)。
所需输出
在我的场景中(我在用户在 cookie 横幅中接受 cookie 后将脚本添加到头部),简单地自己调用 f() 一次(如上所示)是否等同于微软在 js 版本中所做的任何事情?如果没有,我怎样才能在angular应用程序中为我的用例做与msft相同的操作?
答: 暂无答案
上一个:BingAds 报告
评论