我目前正在尝试构建一个chrome扩展程序,它会在将图像上传到Facebook之前在后台处理图像,以保护用户的隐私。 我的问题是,我不能阻止Facebook在用户选择后直接上传图像。为了实现这一点,我尝试注入一些注册onChange Listener的JavaScript:
var inputElements = document.getElementsByClassName('_n _5f0v');
for(i = 0; i < inputElements.length; i++){
//inputElements[i].addEventListener('change', handleImages, true);
inputElements[i].onchange = handleImages;
}
function handleImages(e){
e.preventDefault();
alert('Image upload');
return false;
}
但是这不起作用,因为无论如何都会上传图像。警报被正确触发,但是preventDefault似乎在这里不起作用,因为facebook上传脚本在其他地方处理。 关于我如何做到这一点的任何线索?
答案 0 :(得分:0)
事件处理不是这样的。
要取消注册以前注册的功能,您必须将此功能作为(第二个)参数传递。由于您无法(因为内容脚本无法访问托管页面脚本),因此您也无法删除表单提交的侦听器。 您不能依赖preventDefault,因为您无法确定将首先触发哪个事件。
我认为您可以尝试替换负责文件上传的表单,但我不确定在Facebook的情况下是否可行。如果可以的话,你可以做任何你想做的事。