2012-03-21 6 views
0

とHTMLブロックの親ノードを取得します。だから、このコードの私の選択がある:私は(selHTML)を警告するとき私はHTMLのブロックを持っているのjavascript

sel = parent.document.getElementById('frame').contentWindow.document.getSelection(); 
var range = sel.getRangeAt (0); 
var docFragment = range.cloneContents(); 
var tmpDiv = document.createElement ("div"); 
tmpDiv.appendChild (docFragment); 
selHTML = tmpDiv.innerHTML; 

はので、私は物乞いに書いスパンでコードを取得します。しかし、このHTMLはdivで囲まれています。 このdivはどのように入手できますか?

私はそれを必要とするので、手動でexecCommandを作成する必要があります。 firefoxではexecCommandを使用していますが、選択が適切に行われていないため、正常に動作していないため、既にdivのtext-alignを変更する代わりに、新しいdivが追加されます。事前に

おかげで

+0

'selHTML = tmpDiv.parentNode.innerHTML'はどうですか? – deed02392

+0

"tmpDiv.parentNode is null"というメッセージが表示された場合は、 – novellino

+0

が正しく表示されます。それはまだ何にも追加されていません。 divを含むdivのすべてのHTMLを取得するには、outerHTMLを使用します。 –

答えて

1

私はあなたがdiv要素とその内容のすべてを含める必要がありouterHTMLを、したいと思います。

selHTML = tmpDiv.outerHTML; 

それとも

sel = parent.document.getElementById('frame') 
    .contentWindow.document.getSelection(); 

var range = sel.getRangeAt (0); 
var docFragment = range.cloneContents(); 
var tmpDiv1 = document.createElement("div"); 
var tmpDiv2 = document.createElement('div'); 
tmpDiv2.appendChild (docFragment); 
tmpDiv1.appendChild(tmpDiv2); 
selHTML = tmpDiv1.innerHTML; 
+0

はい、これは私に一時的なdivとすべてのコンテンツを与えるだけです。私は本当にすべてのコンテンツを望んでいません。私はちょうどこれらのスパンがすでにtext-alignでdivでラップされているかどうか確認したい。 – novellino

+0

Firefoxでは 'outerHTML'は最新のFirefoxバージョンでしか利用できません:https://bugzilla.mozilla.org/show_bug.cgi?id=92264 – ZER0

+0

div要素を別のオブジェクトに追加する必要があると思います。それのinnerHTMLを取得します。 –

0

あなたはsetHTML.parentNodeを試してみましたか?

+0

はい、私はそれを警告すると、 "未定義"になります – novellino

+0

これは、selHTMLが文字列であるためです。私はあなたがtmpDiv.parentを意味すると思う。ただし、tmpDivはまだ何も追加されていないため、.parentはnullになります。 –

+0

はい、しかし、もう一度tmpDiv.parentNodeとなってしまいました。 – novellino

0

Firefoxでは、commonAncestorContainerの範囲のプロパティを使用できます。したがってあなたの場合:

var range = sel.getRangeAt(0); 
var container = range.commonAncestorContainer; 

if (container && container.tagName === "div" && container.style.textAlign) { 
    // it's a div tag with an inline style text-align prop 

    // you can also modify the container directly: 
    container.style.textAlign = "center"; 
} 
関連する問題