首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

将内容复制到剪切板兼容主流浏览器的解决方案

2024-12-17 来源:花图问答

如果仅仅使用javascript,是否能解决问题?

对于 Internet Explorer

function copyToClipBoard(copyText) {
        if (window.clipboardData) { // ie
            window.clipboardData.setData("Text", copyText);
        }
    }

很简单~

看来就靠js是很难搞定了,还是得要靠外援flash呀。

兼容主流浏览器的最终解决方案

原理

把一个不可见的 Adobe Flash movie元素放到一个DOM元素上。用户点击那DOM元素时,其实点击的是那不可见的Adobe Flash movie元素,Flash代码来做将内容复制到剪切板的操作。

注意:如果用js模拟一个在那flash上的点击事件,并不能进行复制内容到剪贴板。原因是浏览器和flash的安全限制。

使用

html

<body>
    <div class="demo-area">
        <label for="copy-input">输入要复制到剪切板的文字:</label><br>
        <textarea id="copy-input" cols="30" rows="10"></textarea><br>
        <button id="copy-button">复制到剪贴板</button><br>
    </div>
    <script 
    <script src="path/to/ZeroClipboard.js"></script>
</body>
</html>

js

//配置ZeroClipboard.swf
ZeroClipboard.config({
    swfPath: './vendor/ZeroClipboard.swf'
});

//初始化
var client = new ZeroClipboard(document.getElementById("copy-button"));

client.on("ready", function(readyEvent) {
    client.on("copy", function(event) {
        var clipboard = event.clipboardData;
        var copyText = $('#copy-input').val();
        clipboard.setData("text/plain", copyText); // 将内容添加到剪切板
    });
});

注:ZeroClipboard的2.0.2版本后不再支持IE8-。

显示全文