javascript について


下記のようにして、選択された範囲にリンクを張るように作ってみました。

firefoxでは問題なく動くのですが、
ieですとテキストだけを選択したときには問題なく動作しますが、
画像だけを選択した場合は思い通りに行きません。
画像だけを選択するとその内容が取得できていないようです。
ちなみに「テキスト画像テキスト」というように
テキストを画像を挟んで選択するとうまくいきます。

原因と解決策を教えて下さい。

お願いします。

コードが長くて文字数超過になるので
コメント欄に記載させていただきます。

回答の条件
  • 1人2回まで
  • 登録:2009/12/08 20:53:04
  • 終了:2009/12/15 20:55:02

回答(1件)

id:neuromancer_sho No.1

neuromancer_sho回答回数28ベストアンサー獲得回数32009/12/13 17:05:26

ieが空っぽなのと、"editor"というフレームがどうなっているのか分からないので、

    ie=document.all;
    if (ie) 
    {
        //var win = frames['editor'].window;
        //var doc = frames['editor'].document;
        var win = window;
        var doc = win.document;

というふうにして試したところ、画像だけを選択した場合でもリンクが貼れました。IE8で。

id:worldtravel

ありがとうございます。

しかし期待通りの動作はしませんでした。

http://wiki.bit-hive.com/tomizoo/pg/JavaScript%20%A5%A4%A5%F3%A5...

2009/12/14 22:07:29
  • id:worldtravel
    function tag_encloses(tag, href, target, title) {
    var node = document.createElement(tag);
    if (tag == 'a') {
    if (!href) {
    return false;
    }
    if (href) {
    node.setAttribute("href", href);
    }
    if (target) {
    node.setAttribute("target", target);
    }
    if (title) {
    node.setAttribute("title", title);
    }
    }
    if (ie) {
    var win = frames['editor'].window;
    var doc = frames['editor'].document;
    win.focus();
    var range = doc.selection.createRange();
    var container = document.createElement("div");
    container.appendChild(node);
    node.innerHTML = range.htmlText;
    try {
    range.pasteHTML(container.innerHTML);
    } catch(e) {
    alert(e);
    }
    } else {
    var win = document.getElementById('editor').contentWindow;
    var selection = win.getSelection();
    var range = selection.getRangeAt(0);
    range.surroundContents(node);
    }
    }
  • id:Cherenkov
    関数だけじゃわからない、Firefoxで動くのならデモを用意するべき。
    現状のソースを貼った方がみんな答えやすい。
  • id:neuromancer_sho
    >しかし期待通りの動作はしませんでした。
    当然、そのまま使ったのでは期待通りの動作はしません。
    editorという名前のフレームのhtmlソースがなければ何も答えられません。
  • id:neuromancer_sho
    あと、IEのバージョンは何ですか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません