2016-02-26 22 views
4
setClipboardText = function(event) { 
    var htmlData, node, textData; 
    event.cancelable = true; 
    event.preventDefault(); //add this code will make iOS paste null 
    node = document.createElement('div'); 
    node.appendChild(window.getSelection().getRangeAt(0).cloneContents()); 
    htmlData = '<div>Some copyright' + node.innerHTML + '</div>'; 
    textData = 'Some copyright' + window.getSelection().getRangeAt(0); 

    event.clipboardData.setData('text/html', htmlData); 
    event.clipboardData.setData('text/plain', textData); 
}; 

copyrightRange = document.getElementById('content-copyright'); 

copyrightRange.addEventListener('copy', function(e) { 
    setClipboardText(e); 

上面的代碼將在PC瀏覽器上工作,但在移動瀏覽器上,它不起作用。我測試的問題是event.preventDefault();。但沒有這個,我的功能就沒有意義了。有人能幫我嗎?如何在用戶在移動瀏覽器中複製網頁內容時自動添加版權?

+1

只是爲了記錄在案,我*絕對討厭*網站,惹你的剪貼板。 –

+0

我也不喜歡它,但現在是我的工作,我必須這樣做。 – EricKK

回答

0

我不確定這是否可行,因爲我不是自己測試這個,但我想你想使用return false,這應該可以防止默認的事件行爲。您也可以嘗試event.stopPropagation()並返回false。

有更多的信息在Mozilla開發者網絡https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Tutorial/More_Event_Handlers#Prevent_Default_Action。我在這個頁面中所迷惑的是這個引用中「屬性監聽器」的精確定義:

或者,對於屬性事件監聽器,您可以只從代碼返回false。

這個問題的前兩名答案也多是相關的:

event.preventDefault() vs. return false

+0

謝謝,但它不起作用。你可以用手機瀏覽器訪問www.zhihu.com,然後複製一些42字以上的答案給備忘錄,你可以找到版權。 – EricKK

+0

我沒有iPhone:| –

+0

好的,無論如何,謝謝! – EricKK

相關問題