我睡眠不足还是什么?以下代码
var frame=document.getElementById("viewer");
frame.width=100;
frame.height=100;
var ctx=frame.getContext("2d");
var img=new Image();
img.src="http://www.ansearch.com/images/interface/item/small/image.png"
img.onload=function() {
// draw image
ctx.drawImage(img, 0, 0)
// Here's where the error happens:
window.open(frame.toDataURL("image/png"));
}
Run Code Online (Sandbox Code Playgroud)
抛出这个错误:
SECURITY_ERR: DOM Exception 18
Run Code Online (Sandbox Code Playgroud)
这不可能不起作用!请问有人解释一下吗?
首先,在SO上有一个相同标题的问题,但它不是我正在寻找的,也没有完整的答案.
所以这是我的问题.假设我有这个指向图像的URL.
https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/299595_10150290138650735_543370734_8021370_355110168_n.jpg
Run Code Online (Sandbox Code Playgroud)
一旦我将此参数放在?dl=1
URL的末尾,它就可以下载了.
https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/299595_10150290138650735_543370734_8021370_355110168_n.jpg?dl=1
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过用户脚本执行此任务.所以我使用了XMLHttpRequest.
var url = "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/299595_10150290138650735_543370734_8021370_355110168_n.jpg?dl=1";
var request = new XMLHttpRequest();
request.open("GET", url, false);
request.send(null);
if (request.status === 200)
{
alert(request.statusText);
}
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴.
但它不起作用.
我正在写第一个Chrome扩展程序.我正在尝试使用jQuery和jQuery Image Desaturate插件在http://www.flickr.com上对页面上的图像进行去饱和处理.
我在我的background.html中以编程方式加载我的脚本(以及jQuery和插件):
// On browser action click, we load jQuery and the desaturate plugin, then
// call our own flickrnoir.js to desaturate the photo.
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, {file: "jQuery.desaturate.js" }, function() {
chrome.tabs.executeScript(null, { file: "flickrnoir.js" });
})
});
});
Run Code Online (Sandbox Code Playgroud)
我在我的Flickr页面中指定了权限manifest.json
:
"permissions": [
"tabs", "http://www.flickr.com/", "http://*.static.flickr.com/"
]
Run Code Online (Sandbox Code Playgroud)
这看起来工作得很好,例如,我可以将Flickr照片页面上所有div的背景添加为红色flickrnoir.js
,然后打开Flickr页面并点击我的扩展程序按钮:
$("div").css("background-color", "#ff0000");
Run Code Online (Sandbox Code Playgroud)
...所以,我成功加载了jQuery,它可以成功访问和更改http://*.flickr.com/*
页面的DOM元素.
但是,当我尝试使用去饱和插件去饱和图像(或者所有图像,实际上)时,我遇到了安全错误.我的代码:
$("img").desaturate();
Run Code Online (Sandbox Code Playgroud)
...最终以运行此行的jQuery.desaturate插件的代码结束:
var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH); …
Run Code Online (Sandbox Code Playgroud) canvas ×2
javascript ×2
cross-domain ×1
download ×1
getimagedata ×1
html5 ×1
security ×1
userscripts ×1