获取 Firefox 插件来检测和模拟检查 Apple Pay 支持的尝试

getting a Firefox plugin to detect and mimic attempts to check for Apple Pay support

现在 Apple 的信用卡产品已经推出,我可以通过 Apple Pay 在网上购物获得 2% 的现金返还。不幸的是,我选择的浏览器是 Firefox,它还不支持 Apple Pay。

我想检测检查 Apple Pay 支持的尝试,这样我就可以以某种方式提醒自己并切换到 Safari 以完成我的购买。根据 Apple's docs,此检查是通过 window.ApplePaySession.

执行的

因此,我在扩展中尝试了以下操作:

manifest.json

{
    "manifest_version": 2,
    "name": "applepay",
    "version": "1.0",
    "content_scripts": [
        {
            "matches": [
                "*://*/*"
            ],
            "js": [
                "applepay.js"
            ]
        }
    ]
}

applepay.js

window.ApplePaySession = {
    canMakePayments: function () {
        console.log('canMakePayments');
        return Promise.resolve(true);
    },
    canMakePaymentsWithActiveCard: function () {
        console.log('canMakePaymentsWithActiveCard');
        Promise.resolve(true);
    },
};

我能够在 applepay.jsconsole.log(window) 并获得整个对象,但是我对对象的 更改 似乎没有生效- 它的表现就像 window 是只读的。我错过了什么?

在 Firefox 中,内容脚本(用 WebExtensions 编写的插件)与页面脚本(网站脚本)不共享相同的上下文。

在您的内容脚本中,执行与此类似的操作:

function notify(message) {
   console.log("do something");
}

exportFunction(notify, window, {defineAs:'notify'});

之后,页面脚本将看到 window.notify 存在。

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts