Amp html 修改AMP页面中链接的亚马逊附属机构ID
为了更好地了解Flipboard流量与普通web流量相比的表现,我们希望在Flipboard在其移动应用程序中加载我们的AMP页面时,为Flipboard使用一个独特的Amazon附属ID AMP提供自定义JavaScript,但它有很大的局限性。值得注意的是,它不允许在没有相关用户输入的情况下改变DOM。我想到的最好的主意是:Amp html 修改AMP页面中链接的亚马逊附属机构ID,amp-html,flipboard,Amp Html,Flipboard,为了更好地了解Flipboard流量与普通web流量相比的表现,我们希望在Flipboard在其移动应用程序中加载我们的AMP页面时,为Flipboard使用一个独特的Amazon附属ID AMP提供自定义JavaScript,但它有很大的局限性。值得注意的是,它不允许在没有相关用户输入的情况下改变DOM。我想到的最好的主意是: <script id="entry-content" type="text/plain" target="amp-script"> document
<script id="entry-content" type="text/plain" target="amp-script">
document.querySelectorAll('a').forEach(function(el) {
el.addEventListener('click', function() {
var link = el.getAttribute('href');
if (-1 === link.indexOf('amazon.com')) {
return;
}
el.setAttribute('href', link.replace(/tag=[A-Za-z0-9\-]+/, 'tag=newid' ));
});
});
</script>
document.querySelectorAll('a').forEach(函数(el){
el.addEventListener('click',函数(){
var link=el.getAttribute('href');
如果(-1==link.indexOf('amazon.com')){
返回;
}
el.setAttribute('href',link.replace(/tag=[A-Za-z0-9\-]+/,'tag=newid');
});
});
AMP允许变异,但浏览器对新选项卡使用原始的链接
值,因此不起作用
我也试过:
- 在
不可用中调用
,单击事件处理程序<代码>打开()window.open()
- 只需修改
上的链接即可。AMP杀死了突变document.addEventListener('scroll')
还有其他狡猾的想法吗?你能适应这种方法吗?@JayGray!谢谢你的建议!除了一个问题:生成JSON blob时,我似乎无法检查用户代理。我担心没有前端解决方案,因为不允许在没有交互的情况下修改DOM。我能想到的一个解决方案是,在后端执行用户代理检查,并从一开始就简单地“正确”呈现链接。