編集:あなたはFFの拡張のためにこれを必要とするので、あなたは、IEのためのすべての機能を省略することができますし、あなたがする必要があるすべてのものはこれです:範囲について
window.getSelection().getRangeAt(0).commonAncestorContainer
詳細情報:https://developer.mozilla.org/en/DOM/range
すでに同様の質問があります。
Get selected text and selected nodes on a page?
私は機能を少し修正:
<script type="text/javascript">
function getTextSelection() {
if(document.selection)
return document.selection;
else if(window.getSelection)
return window.getSelection();
else if(document.getSelection)
return document.getSelection();
else
return false;
}
function getSelectionRange() {
var selection = getTextSelection();
if(selection.getRangeAt)
return selection.getRangeAt(0);
else if (selection.createRange)
return selection.createRange();
else
return false;
}
function getSelectionParent(r) {
if(r.parentElement)
return r.parentElement;
else if(r.commonAncestorContainer)
return r.commonAncestorContainer;
else
return false;
}
</script>
HTML:
<body>
<p><em>This is just some random text. </em><strong>Select me and then click the button!!!</strong></p>
<p><input type="button" value="Parent element?" onclick="alert('The selection\'s parent element is: ' + getSelectionParent(getSelectionRange()).nodeName);" /></p>
</body>
私はIE6,7とFF3.0でこのようなものをテストしました。何の問題もなく働いた。あなたが知っておかなければならないのは、FFと違ってIEはテキストノードを無視するということだけです。
あなたはそれを自分で試してみたい場合:THIS
<script type="text/javascript">
function getTextSelection() {
if(document.selection)
return document.selection;
else if(window.getSelection)
return window.getSelection();
else if(document.getSelection)
return document.getSelection();
else
return false;
}
function getSelectionRange() {
var selection = getTextSelection();
if(selection.getRangeAt)
return selection.getRangeAt(0);
else if (selection.createRange)
return selection.createRange();
else
return false;
}
function getSelectionParent(r) {
if(r.parentElement)
return r.parentElement;
else if(r.commonAncestorContainer)
return r.commonAncestorContainer;
else
return false;
}
</script>
HTML http://dev.freedig.org/files/selection.html
私はそれを読んで、それだけであなたの選択したテキストを提供しますノードではない、私は間違っていますか? –
最後のコード例は、テキスト選択の親ノードを取得します。私はそれを私の答えに加えました。 – slosd
ありがとうございますが、どちらもうまくいきません:(デモリンクでもオブジェクトや要素が表示されません) –