5

エディター内で直接ファイルをアップロードできるように、独自のinsertImageDialogフックを作成しました。

            $('div#insertImageDialog input[type=file]').ajaxfileupload({
                action: $file.attr('data-action'),
                onStart: function() {
                    $loader.show();
                },
                onComplete: function(response) {
                    $loader.hide();
                    if (response.success) {
                        callback(response.imagePath); // <---- oO
                        dialogClose();
                    } else {
                        alert(response.message);
                        $file.val('');
                    }
                }
            });

これは、初めて画像を挿入するときに正常に機能します。

その後は毎回、次の例外で失敗します。

Uncaught TypeError:nullのメソッド'removeChild'を呼び出すことができませんMarkdown.Editor.js:1683 commandProto.doLinkOrImage.linkEnteredCallback Markdown.Editor.js:1683self.initMarkdownEditor.editor.hooks.set。$。ajaxfileupload.onComplete

アップロードはエディターの外部では正常に機能するため、コールバックに関するある種のスコープの問題であるとしか思えません。

一日のほとんどの間、これの上に私の髪を引っ張ってきました。

4

1 に答える 1

2

問題は2つありました

  1. ユーザーが画像ボタンをクリックするたびにフックが呼び出されることに気づきませんでした。これは、実際にファイルアップロード用に複数の「変更」ハンドラーを設定していたことを意味します。
  2. 私が使用していたアップロードプラグインは、ハンドラーが一度登録されることを期待していました(クリアしても)。

私は自分のブログで完全に機能するソリューションを文書化しました。

于 2012-06-01T13:03:40.503 に答える