在 safari 扩展中读取浏览器 cookie

Ana*_*ghe 5 safari-extension

我是 safari 扩展开发的新手。我需要访问特定于网站的浏览器 cookie。我知道这在 chrome 扩展开发中是可能的。如何通过 safari 扩展开发来做到这一点。

Lui*_*Pal 3

从注入的脚本中,您可以将 cookie 发送到扩展程序。因此,在构建扩展时,您有 global.html 和injected.js。

注入.js:

var cookies = document.cookie;
safari.self.tab.dispatchMessage("setCookies",cookies);
Run Code Online (Sandbox Code Playgroud)

global.html(不带 HTML 标签):

var cookies = null;

function getCookies(incMsg) {
    cookies = incMsg.message;
    alert('I received them :) \n\n'+cookies);
}

safari.application.addEventListener("message",getCookies,false);
Run Code Online (Sandbox Code Playgroud)

每次加载页面时,上面的代码都会将所有 cookie 发送到扩展程序。那么当然你还需要读出cookies。我使用了类似以下函数(在 global.html 中):

function readCookie(name) {
    if(cookies) {
        var nameEQ = name + "=";
        var ca = cookies.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

祝你好运!