- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 facebook 图像转换为 base64,但是 FileReader 无法在 IE9 上运行,因此我决定使用 canvas。
无论如何,使用 Canvas 也会产生一个问题:
SCRIPT5022: DOM Exception: SECURITY_ERR (18)
这是我的代码:
var url="http://graph.facebook.com/1420060541/picture?width=320&height=320";
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.onload = function () {
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL('image/jpg');
console.log(dataURL);
canvas = null;
};
img.setAttribute('crossOrigin','anonymous');
img.src = url;
最佳答案
更新
似乎 facebook 确实有跨源 header Access-Control-Allow-Origin : "*"
允许任何人查看图像。如果您尝试加载图像时忘记添加 img.setAttribute('crossOrigin','anonymous');
,那么第二次添加将会失败,因为缓存的图像会干扰请求 header 。清空缓存并使用 img.setAttribute('crossOrigin','anonymous');
再次发送请求,这可能会解决您的问题。
跨域错误。没有解决办法。图像必须来自同一域,因此您需要将图像移动到您的域(如果有)。或者在您的计算机上设置服务器并将图像移动到该服务器上的目录中。如果您的域名是 www.privateDomain.com
,则只能通过 toDataURL
访问来自 privateDomain
的图像如果您只是使用硬盘,即您的页面网址以 file:///
开头,您将无法通过 toDataURL 访问任何图像。
也有异常(exception),因为某些服务器会发送带有允许跨域访问的图像的 header 。此类图像的来源之一是维基共享资源。还有其他的,但你必须搜索它们。
另一个解决方案是关闭浏览器上的网络安全(我不知道在 IE 上如何),但这将使您的浏览器容易受到攻击。
令人遗憾的是我们甚至不能相信图像,但事实就是如此。
关于javascript - IE9 : canvas. toDataURL SECURITY_ERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581817/
我有一个使用 Cordova 插件的混合应用程序 (iOS/Android)。我有一位 Android 用户在使用文件插件时收到 SECURITY_ERR。这似乎是在调用 writeFile() 时发
我正在尝试将 facebook 图像转换为 base64,但是 FileReader 无法在 IE9 上运行,因此我决定使用 canvas。 无论如何,使用 Canvas 也会产生一个问题: SCRI
我正在为 iPad 开发 jQuery 移动应用程序。 jQuery 版本:jquery-1.6.4.js jQuery 移动版本:jquery.mobile-1.0rc2.js 当我在 iPad 中
当数据库大小指定大于 5 MB 时,openDatabase() 方法在 iPad 4.3 和所有 iOS 模拟器 4.x 上抛出异常(SECURITY_ERR:DOM 异常 18)。 使用 Phon
在我的应用程序中,我正在 Canvas 上复制图像,然后从中获取数据。该图像位于项目的根目录中。这是一个简化的代码: var img = new Image(); img.src = picture.
以下代码用于具有必要权限的 Chrome 应用程序。它在 Windows XP 以外的任何操作系统中都可以正常工作。 window.requestFileSystem = window.re
我关注了http://www.beakkon.com/tutorial/html5/desktop-notification html 5 桌面通知教程。该页面上的演示对我有用。如果我复制整个代码,它
我正在使用canvas来获取图像数据,并且我将该图像数据发送到网络服务,从那里图像将被解码,并且如果我想从该图像获取图像数据,回调到来的是其他域的url ,其抛出错误。尝试过 img.crossOri
我了解到无法对从不同域加载的图像使用 getImageData。有什么技巧可以克服这个问题吗? 谢谢 最佳答案 您可以在您的域上制作一个代理脚本来转发来自其他域的图像。 关于javascript -
我正在使用 HTML5 服务器发送事件来发布服务器的某些状态。我正在实现一个 chrome 扩展来跟踪状态,并在需要时通知用户。 但是当我尝试创建 EventSource 对象时Chrome 抛出异常
我在内部服务器 server1.mydomain.com/page.jsp 有一个页面,在不同的内部服务器有另一个页面,10.x.x.x:8081/page.aspx。 在 server1.mydom
当我尝试使用 this 设置 cookie 时,Chrome 的开发者工具窗口出现以下错误jQuery 插件: Uncaught Error: SECURITY_ERR: DOM Exception
简介 我使用 RapidWeaver——Mac OS X CMS 应用程序——它不使用服务器环境。它有一个编辑器和一个预览模式。预览模式是基于 Webkit 的渲染器,我可以使用“检查元素”,就像您通
在 iOS 5.1 (iPad) 上运行 Safari,我的 JavaScript 代码抛出以下异常: SECURITY_ERR: Dom Exception 18: An attempt was m
在我的应用程序中,我正在尝试将图像转换为 Canvas 。我正在做的是这个。 我正在尝试从外部服务器上传图片,如果图片的高度大于宽度,我会在 Canvas 上绘制并旋转它。 它在 Chrome 和 F
我有一个 T 恤设计应用程序(在 Fabric.js 1.7.14 上运行),它在 iOS Safari 上运行良好一段时间了。现在,当我在 canvas 元素上调用 toDataURL 时,Safa
我正在关注this tutorial开始使用 webGL 和 Three.js。我的问题是添加行 map: THREE.ImageUtils.loadTexture("images/article.p
我正在使用 cordova 构建混合 android 应用程序,我正在使用此函数返回数据库对象,它在应用程序中的任何地方都可以正常工作 function openDB() {
我正在尝试将浏览器连接到提供服务器发送事件 (SSE) 的服务器。此服务器的域与原始服务器的域不同。例如,如果您调用 http://d1.example.com/page,此页面将尝试连接到 http
我是一名优秀的程序员,十分优秀!