javascript - 新しいページを読み込むときに、読み込まれたJavaScriptコンテンツをWebViewに保存する方法は?

原文 javascript cocoa webview state

WebViewでは、view.stringByEvaluatingJavaScriptFromStringを実行するか、view.mainFrame.javaScriptContextを介して取得できるJSコンテキストにコードを直接ロードすることで、JavaScriptコードをロードできます。

ただし、新しいURL(WebView.mainFrameまたはJavaScriptで、たとえばwindow.locationを設定して)に移動すると、すべてのJavaScriptコードが失われ、再度ロードする必要があります。これは、JSコードで移動し、その後スクリプトで続行したい場合に特に問題になります。すべてのJSのクリアを回避し、特に現在のJSコードの停止を防ぐ方法はありますか?
答え
結局のところ、コンテキストの再現を防ぐことは不可能です。代わりに、スタンドアロンのJSContextインスタンス(手動で作成)と、そのコンテキストで変数として設定したWebViewインスタンスが作成されました。このように、スタンドアロンコンテキストでJavaScriptを実行できますが、WebViewを使用してすべてのWeb作業を実行できます。大きな欠点は、単にDOMを操作するのではなく、コンテキストで操作関数を提供する(WebViewインスタンスにマッピングする)か、メソッドをJSに公開するすべてのWebViewクラス(DOMDocumentなど)の拡張を作成する必要があることです。そうすれば、swift / obj-cクラスを直接操作できます。
関連記事

javascript - 大きなファイルのブラウザをクラッシュさせるUint8Arrayの変換

javascript - $ .postは、$ J = jQuery.noConflict();と組み合わせて機能していません。

javascript - 選択した要素をAjaxライブ検索からテキストボックスにコピーします

javascript - JavaScriptでのオブジェクトを使用した多次元配列の並べ替え

javascript - ラチェットからスライダーを破壊/無効にする方法は?

javascript - ウェブページに最小高さを置く必要がある

javascript - React-RouterとMixinsを使用したサーバー側認証

javascript - EmberはPOSTリクエストのJSON応答を取得します

javascript - jqueryを使用して<body>にhtmlコンテンツを設定する方法

javascript - addeventlistenerがGmailのChrome拡張機能でイベントをキャッチしない