2

だから私は人々が私たちのサイトで選択しているものを集めようとしています。現在、それはどこでも動作します、そして私はそれを望んでいません。彼らが特定のDIVで選択している場合にのみそれが欲しいです。

これは基本的に、私が見つけたスクリプトへの単純な変更です。

<script type="text/javascript">
function appendCopyright() {
    var theBody = document.getElementsByClassName("sbReview")[0];
    var selection;
    selection = window.getSelection();
    var copyrightLink = '<br /><br /> - Read more at: <a href="'+document.location.href+'">'+document.location.href+'</a><br />&copy;2012 <? printf($product. ' & ' .$spOrganization); ?>';
    var copytext = selection + copyrightLink;
    var extra = document.createElement("div");
    extra.style.position="absolute";
    extra.style.left="-99999px";
    theBody.appendChild(extra);
    extra.innerHTML = copytext;
    selection.selectAllChildren(extra);
    window.setTimeout(function() {
    theBody.removeChild(extra);
    },0);
}
document.oncopy = appendCopyright;

変更selection = window.getSelection();してみましたが、壊れてしまいました:(

基本的に、私は上記のコードが必要ですが、全体ではなく、特定のdivでのみ機能しますbody

4

3 に答える 3

4

おそらく、 を使用するべきではありませんdocument.oncopy。代わりに、対象の div 要素がdiv.oncopyどこにあるかを使用してみてください。div

于 2012-10-29T21:56:23.107 に答える
0

var selection = getSelection().toString();はあなたの解決策getSelection()です-Selectionオブジェクトを返し、メソッドを使用するだけで文字列を取得できます.toString()。Selectionオブジェクトのその他のプロパティとメソッドはここにあります:https ://developer.mozilla.org/en-US/docs/DOM/Selection

于 2012-10-29T21:51:32.207 に答える
0

Mozilla JS docsによると 、選択クラスにはメソッドcontainsNode があります。以下はうまくいくはずです。

function appendCopyright() {
    var theBody = document.getElementsByClassName("sbReview")[0];
    var selection;
    selection = window.getSelection();
    // HERE's THE GOODS
    // set aPartlyContained to true if you want to display this
    // if any of your node is selected
    if(selection.containsNode(aNode, aPartlyContained)){
        var copyrightLink = '<br /><br /> - Read more at: <a href="'+document.location.href+'">'+document.location.href+'</a><br />&copy;2012 <? printf($product. ' & ' .$spOrganization); ?>';
        var copytext = selection + copyrightLink;
        var extra = document.createElement("div");
        extra.style.position="absolute";
        extra.style.left="-99999px";
        theBody.appendChild(extra);
        extra.innerHTML = copytext;
        selection.selectAllChildren(extra);
        window.setTimeout(function() {
            theBody.removeChild(extra);
        },0);
    }
}
document.oncopy = appendCopyright;
于 2012-10-29T22:01:48.387 に答える