我想弄个点击图片弹出上传窗口的代码
function ss() { document.getElementById("kk").click(); }
我测试了一下,在IE里可以运行,怎么在firefox里就不起作用呢?
望各位解答一下菜鸟~~拜谢~~
http://topic.csdn.net/u/20081025/12/4ec8585f-5b69-444d-9989-5ab82ffd5569.html
这应该是你要的答案,倒数第二个人的回答.总结来说就是出于安全考虑,是不可能完美实现的.要想实现这种功能,除非按照那个回答者的方法做,或者采用Flash上传
可能是document.getElementById 这个方法在Firefox里取不到值,建议使用dojo.byId去获取,不过需要导入dojo
因为在IE中document.getElementById在获取不到id为kk的element的时候 会查找name为kk的element
而这在Firefox中是不支持的
lz只需要把
改为
即可
name属性不是WC3建议使用的。Firefox里document.getElementById取不到name的值,只能去id的。
参见以下文档:
[url]http://www.w3pop.com/learn/view/p/2/o/0/doc/dom_obj_fileupload/[/url]
[b][color=blue]
fileupload的click方法:
Simulates a mouse-click on the FileUpload object
模仿鼠标点击FileUpload对象
IE支持,Firefox不支持,W3c不支持。
lz要换方法做了....[/color][/b]
可能是因为Firefox中使用document.getElementById获取到的element无法调用click方法
lz这种办法虽然在IE中能够调用浏览按钮 还是无法成功提交服务器的,这个是ie居于安全性考虑
建议把这个file控件隐藏 并且在图片的onmouseover事件中 把file按钮移到鼠标下(当然还是保持隐藏),并且获取焦点
这样的话 鼠标实际上点击的是这个file控件的上传按钮
也避免了Firefox的差异问题啊
click是IE独有的事件,要想在FIREFOX中实现事件触发。
这里有一个适用多个浏览器的脚本:
var fireEvent = function(element, event){
element = (typeof(element) == 'string')?document.getElementById(element):element;
if (document.createEventObject) {
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on' + event, evt)
}
else {
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
在你的脚本中,可以这样使用
function ss()
{
fireEvent(document.getElementById("kk"),'click')
}