Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么除了Opera之外,其他浏览器都可以使用这个功能?_Javascript_Html_Css_File Upload_Opera - Fatal编程技术网

Javascript 为什么除了Opera之外,其他浏览器都可以使用这个功能?

Javascript 为什么除了Opera之外,其他浏览器都可以使用这个功能?,javascript,html,css,file-upload,opera,Javascript,Html,Css,File Upload,Opera,我正在使用一个脚本,它用你想要的任何图像替换通常的文件上传输入,然后使用JS确保每当鼠标移动到你想要使用的图像上时,鼠标指针下方都有一个不可见的“浏览”按钮 它可以在ie7 ie8 ie9 Firefox、Safari、Chrome中使用,但不能在Opera上使用。在Opera上显示常规文件输入 我知道有很多脚本可以做类似的事情,但要么它们太复杂,我不知道如何使用它们(例如uploadify),要么它们做类似的事情,但只是做得不好——比如使自定义图像的大小与文件输入的大小相同(这也有问题) -没

我正在使用一个脚本,它用你想要的任何图像替换通常的文件上传输入,然后使用JS确保每当鼠标移动到你想要使用的图像上时,鼠标指针下方都有一个不可见的“浏览”按钮

它可以在ie7 ie8 ie9 Firefox、Safari、Chrome中使用,但不能在Opera上使用。在Opera上显示常规文件输入

我知道有很多脚本可以做类似的事情,但要么它们太复杂,我不知道如何使用它们(例如uploadify),要么它们做类似的事情,但只是做得不好——比如使自定义图像的大小与文件输入的大小相同(这也有问题)

-没什么大不了的


为什么它在歌剧中不起作用。有没有办法解决这个问题?除了不在Opera中工作之外,这非常适合我想要的东西。

我已经使用了您的示例()并试图找到它在Opera中不起作用(很好)的原因。以下是我“研究”的结果:

  • 检查
    if(window.opera | | |…
    是该功能被阻止的原因。如果删除该选项
  • 然后,你会得到一个隐藏按钮的运动图像,它覆盖了你想要显示的图像
  • 如果完全删除函数
    elem.parentNode.onmousemove=function(e){…}
    ,按钮将不会显示,但Chrome,…和Opera中也不会显示光标,正如您现在看到的输入字段的条形光标一样
  • 如果按下“按钮”,则调用下载对话框的功能
也许你应该看看这个问题,并参考那里的工作解决方案:

  • (如果jquery是您的一个选项)

有趣的案例显示了一个我不知道的Opera布局错误:如果将不透明度设置为0的文件输入移动,使输入的文本区域部分位于父级之外,则输入将变为可见。我将报告此问题的错误并跟进

要解决此问题并使脚本正常工作,可以执行以下操作:

  • 首先删除或更改禁用脚本的Opera嗅探。查找以下内容:

    if(window.opera)||

    然后删除
    window.opera |

  • 添加一个小的变通方法,该方法将更改文件输入的位置,并避免将其放置到文本区域部分隐藏且不透明度被忽略的左侧。在此之前:

    this.file.style.left=x-(w-30)+“px”

    添加此行:


    如果(window.opera&&parseFloat(opera.version())>11.50&&(x-(w-30)您提供的参考资料说,它不适用于Opera。在如何修复它的页面中有一条评论,搜索Opera。该库是从2007年开始的,所以有点过时。@mliebelt感谢您的回复。我看到它说它不适用于Opera,但认为解决方案没有发布。您的意思是:如果(some_element.style.opacity!==未定义){works}当我查看时,我看到以
    if(window.opera | | |)(ie&&ie<5.5)开头的行
    …我会尝试删除部分
    window.opera |
    ,然后再试一次。您好,再次感谢。如果我删除该部分,它确实会像您所说的那样出现,但当您将鼠标悬停在上面时,“浏览”按钮会显示在图像顶部:(对于堆栈溢出,这不是一个有效的问题。您需要在问题中包含您正在使用的脚本,而不仅仅是它的链接。谢谢,我将查看您的建议。感谢您抽出时间为我查看:)嘿,抱歉,现在只是回复,我在喝酒。你的建议有效,但在IE7、8和9中中断。不幸的是,它似乎只是一个可以输入的文本输入(除非你不能输入)。我读了你链接的那些文章,但我不确定它们是否解决了我的问题?但我可能没有理解它们,我仍然有点醉:)现在内部跟踪为CORE-42270嘿,谢谢你的回复。这非常有效。希望这是未来的证明!再次感谢