• 締切済み

CKEditorのフォームIDが分からない

社内DBにCKEditorを使ったHTMLエディタを導入しています。 画像やファイルの添付を行う事もあり、KCFInderを追加で導入しましたが、作業内容にあった形での利用ができない為、ファイル管理の部分は自作のプログラム(PHP)で作成する事になりました。 操作フローは以下の通りです。 1.CKEditorの画像挿入ダイアログを起動 2.ブラウズボタンをクリックで自作のファイル管理ウィンドウが起動 3.ファイル管理ウィンドウのファイル名クリックで画像挿入ダイアログの「URL」に画像パスをコピー 1,2まではどうにか動くようになり、3が上手くいきません。 とりあえずURLのテキストフォームIDをFireFoxのFireBugで調べてみると id=cke_101_textInput となっていたので window.opener.document.getElementById('cke_101_textInput').value = file_path; とするとテキストフォームに画像パスが入りました。 しかし、IEやCKEditorでテーブルダイアログを起動した後などはIDが 動的に変化するようなのです。 IDを確認する処理をどのように追加できるのか? もしくは生成されるテキストフォームに「name="file_path"」を追加して window.opener.document.form.file_path.value = file_path にしたらどうかなと 考えています。 このあたりを実現する為にどこの部分をどのようにしたらいいのか 教えてください。 よろしくお願いします。 CKEditorのバージョンは 3.63です

みんなの回答

回答No.1

CKEditorを知りませんが、一般的なhtml+JavaScriptだと解釈して回答させて頂きます。 全く参考にならない可能性もありますが、ご了承下さい。 思いついた方法を書きます。 1.  >> もしくは生成されるテキストフォームに「name="file_path"」を追加して  追加できるのであれば、idを追加してはどうですか? 2.  何らかの理由でidを追加できないのであれば、  nameなりclassなりを追加して、  document.getElementsByName("name")[0]とするか  document.getElementsByClassName("classname")[0]とすれば取得できます。  0は出現順番ですが、一意なnameやclassを挿入すれば順番もクソもないので、0で問題ありません。  しかし、classでの参照はIE非対応となります(prototype.jsを導入すればできますが、あまり勧めません。 3.  もしそのinput要素の出現順番がわかるのであれば、  document.getElementsByTagName("input")[n]で参照できます。  nが出現順番です。

関連するQ&A