JSON-RPC プロトコルを介して iframe と通信するブックマークレットを実装しています。
window.JSON
ただし、cnn.com などの一部のサイトでは、ブラウザーに既にネイティブ JSON オブジェクトがあるにもかかわらず、JSON2 が読み込まれます。
問題は、iframe 内で同じ悪い慣行に従いたくないということです。JSON2 は、Mozilla Firefox および Chrome のネイティブ JSON と互換性がないようです。
したがって、ネイティブ JSON と JSON2 で stringify を実行すると、次の結果が得られます。
JSON.stringify({key: "value"})
JSON2
{key:"value"}
ネイティブ JSON
{"key":"value"}
(鍵は で囲みます"
)
"
問題は、JSON2 で生成された文字列に がなく、エラーがスローされると、ネイティブ JSON がそれを好まないことです。
モジラ ファイアフォックス:SyntaxError: JSON.parse: expected property name or '}'
グーグルクローム:SyntaxError: Unexpected token k
この問題を完全に解決するには、文字列をデコードする場合と同じ JSON ライブラリを使用して文字列をエンコードする必要があります。
その方法の 1 つは、必ず JSON2 または JSON3 を両側で使用することですが、可能であればネイティブの json ライブラリを使用したいと考えています。
cnn.com のようなサイトがネイティブの JSON ライブラリをオーバーライドした今、どうすればそれに戻ることができるでしょうか?
おそらく、同じドメインを指す iframe を作成し、その から JSON オブジェクトをフェッチすることもできますcontentWindow
が、それは非常に非効率的です。
より良い方法はありませんか?