0

しばらく前にブックマークレットを作成しましたが、今はログイン機能を追加しようとしています。

私のやり方。ユーザーが現在ログインしていない場合にブックマークレットをクリックすると、ポップアップウィンドウが開き、ログインページのURLが表示されます。

私のアイデアは、ユーザーがログインすると、JavaScriptスクリプトタグをエコーするというものでした。スクリプト内には、ブックマークレットで定義されている関数の呼び出しがあります。

ユーザーがログに記録されると、これをポップアップにエコーします。

if(logged){
    echo '
    <script type="text/javascript">
        window.opener.updateLoginBookMarklet(true);
        window.close();
    </script>
   ';
    exit;
}

これは、ブックマークレットで定義されている関数です。

window.updateLoginBookMarklet = function(status){
     LoggedIn = status;
}

しかし、それは私が得るようですError: Permission denied to access property "updateLoginBookMarklet"

クロスドメインの問題が原因である可能性があります。よくわかりません。

誰かが手がかりを持っていますか?それを回避する方法はありますか?

4

1 に答える 1

0

クロスドメインの問題が原因である可能性がありますが、わかりません。

あなたは正しいです。セキュリティ上の理由から、あるドメインのページの JavaScript は、別のドメインのページと直接対話できません。

1 つの解決策は、addEventListener と postMessage を使用することです。bookmarklet postmessage最初にこれらについて読んでから、実用的な例をグーグルで検索することをお勧めします。

于 2013-02-10T17:10:15.457 に答える