Javascript webkit-假网址

标签 javascript web-applications image-processing

Id 将图像(例如)从剪贴板粘贴到 webkit 可编辑内容区域时,源代码如下所示:

webkit-fake-url://DCAC99B9-BA40-4BA7-A419-9C60AAB081DA/image.png 

能够通过 javascript 访问图像并将其与文本一起发送回服务器吗?

最佳答案

显然,您可以对事件监听器使用任何抽象;我提供了一个未抽象的版本;这也将排除 IE < 9

if('addEventListener' in editableElement) {
    editableElement.addEventListener('paste', function(e) {
        // First two conditionals should weed out browsers which
        // don't allow access to pasted content
        if(('clipboardData' in e) && ('types' in e.clipboardData) &&
            e.clipboardData.types.indexOf('public.url') > 1) {
            e.target.ownerDocument.execCommand('insertImage', null,
                e.clipboardData.getData('public.url'));
            e.preventDefault();
            e.stopPropagation();
        }
    }, false);
}

在处理 WebKit 粘贴中的异常时,检查粘贴事件的 clipboardData 是个好主意:

console.dir(eventObj.clipboardData);

但根据我的经验,Web Inspector 似乎在显示控制台时检查内存中的事件对象,而不是当时和范围内的对象 console.dir 被调用。此时,paste 事件将结束并且 Javascript 对剪贴板的访问将被撤销,因此 types 属性将为 null并且实际的剪贴板数据将被隐藏。但在您的事件中,您可以这样做以更好地了解哪些类型可用以及它们的输出是什么:

for(var i = 0; i < eventObj.clipboardData.types.length; i++) {
    console.log(eventObj.clipboardData.types[i] + ':',
        eventObj.clipboardData.getData(eventObj.clipboardData.types[i]));
}

我花了比我愿意承认的更多的时间在 WebKit 浏览器中调试 clipboardData。希望这对您有所帮助!

关于Javascript webkit-假网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4108459/

相关文章:

javascript - 如何在插入大量 dom 元素时显示 'working' 指示器

javascript - 使用 jquery 切换对象的类

mysql - MySQL选择哪个引擎

Java网络应用程序: How to map/direct webapp to your BASE URL/IP?

image - 如何从图像中删除所有线条? (水平、垂直、对角线)

javascript - 在 App.js 文件中作为 props 传递时,图像未在 DOM 中渲染?

javascript - Firebase 使用 JavaScript 中的变量更新字段

web-applications - 是否有任何其他框架(除了 Cappucino)可以在浏览器中构建类似桌面的应用程序?

algorithm - 如何在存在重叠和噪声的情况下从图像中分割主要形状?

python - 在使用 python-pptx 创建演示文稿和插入图片时,如何获取图片占位符的尺寸以调整图像大小?