Amp html 修改AMP页面中链接的亚马逊附属机构ID

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

为了更好地了解Flipboard流量与普通web流量相比的表现,我们希望在Flipboard在其移动应用程序中加载我们的AMP页面时,为Flipboard使用一个独特的Amazon附属ID

AMP提供自定义JavaScript,但它有很大的局限性。值得注意的是,它不允许在没有相关用户输入的情况下改变DOM。我想到的最好的主意是:

<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()
    ,单击事件处理程序<代码>打开()
    不可用
  • 只需修改
    document.addEventListener('scroll')
    上的链接即可。AMP杀死了突变

还有其他狡猾的想法吗?

你能适应这种方法吗?@JayGray!谢谢你的建议!除了一个问题:生成JSON blob时,我似乎无法检查用户代理。我担心没有前端解决方案,因为不允许在没有交互的情况下修改DOM。我能想到的一个解决方案是,在后端执行用户代理检查,并从一开始就简单地“正确”呈现链接。