5

これでどこが間違っているのかわかりません。他のブラウザーでは、正常に動作します。

function main__pageeditor_new_body_SetUrl()
    {
        function getUrlParam(parentObject, paramName)
        {
          var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i') ;            
          var match = parentObject.location.search.match(reParam) ;

           return (match && match.length > 1) ? match[1] : '' ;
        }

        var funcNum = getUrlParam(this, 'CKEditorFuncNum');

        this.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);
}

しかし、IE では次のエラーが発生します。

'this.opener.CKEDITOR' is null or not an object

なぜこれがうまくいかないのですか?

4

7 に答える 7

1

疑問に思っている人のために-これはかなり役に立ちました:

http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(アップローダー)/Custom_File_Browser

于 2012-09-24T16:00:07.707 に答える
0

簡単な検索でこれを見つけました:http ://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/0c014e78-8d35-4df3-93da-7f6a30b4ed8b/

そこで提供される解決策は次のとおりです。

インターネットオプションの[セキュリティ]タブで、[信頼済みWebサイト]アイコンをクリックします。次に、[保護モードを有効にする]チェックボックスをオンにして、InternetExplorerを再起動します。

私が見つけた別のリソースは、信頼できるゾーンからサイトを削除することも提案しています。

信頼済みサイトリストからサイトを削除します...おそらく、オープナー(イントラネット)と同じセキュリティゾーンに既にマップされています。IEの[ファイル]>[プロパティ]ダイアログを選択して、ページ/ドメインがマップされているセキュリティゾーンを決定します。

これまでにいくつかの提案を試したことがあるとすると、奇妙な構成状態になるのに十分な設定を変更した可能性があります。すべてのゾーン設定をデフォルトにリセットして、最初から始めることをお勧めします。

于 2012-08-17T10:03:03.247 に答える
0

http:/localhost:8080 で実行されている Web アプリケーションで window.opener が null を取得する問題に直面しました。localhost の代わりに IP アドレス/ホスト名を配置すると、この問題は発生しません。

確認してみましょう。このソリューションが役立つと強く信じています。

于 2014-04-09T08:56:16.640 に答える
0

window.opener は、セキュリティ上の理由から IE8 では常に機能するとは限りません。window.openerが機能するように、サイトを「信頼できるゾーン」に配置できると思います。

2 つのウィンドウが異なるドメインにある場合、オリジン ポリシーが同じであるため、どのブラウザーでも機能しません。

于 2012-07-04T11:07:32.303 に答える
0

NULLとは何かを一度テストしてください??

this.opener
or
this.opener.CKEDITOR
于 2012-08-16T17:59:49.893 に答える
0

window.opener は、セキュリティ ゾーンが IE8 の「インターネット」の場合に機能します。ウィンドウオープナーを 試着

次はCKEDITOR本体でやってみたかったのでCKEDITOR DEMOへ

そこで、開発者ツールバーを使用してポップアップ ' window.open ' を開き、ポップアップで次のコードを実行しましたが、問題なく動作しました。

>>String(this.opener.CKEDITOR.tools.callFunction);

応答

"function(f){var g=e[f];return g&&g.apply(window,Array.prototype.slice.call(arguments,1));}"

この時点で、すべてがうまくいっている場合は、コードをアップロードするようお願いします。

于 2012-08-16T18:00:56.963 に答える
-1

関数の使用方法によっては、「this」コンテキストが変更される可能性があります。

変化する:

this.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);

に:

window.opener.CKEDITOR.tools.callFunction(funcNum, arguments[0]);

それはそれを修正しますか?

于 2012-08-16T04:00:13.010 に答える