在IE9中使用Uploadify时出现JS错误:SCRIPT5007:对象预期。

16

我正在尝试在div上绑定uploadify。
当我点击上传按钮时,它会显示错误,如SCRIPT5007:Object expected.

有关演示,请查看以下链接,在ie9中拖动div会出错。

head

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/jquery-ui.js"></script>
<script type="text/javascript" src="http://www.uploadify.com/wp-content/themes/uploadify/js/jquery.uploadify.min.js"></script>

正文

<div class="container" id="container">
    <div id="uploadify-item"></div>
    This container is not draggable in IE9 but it works in Chrome and FF. Why not?
</div>

js

的翻译是:

JavaScript

$('#uploadify-item').uploadify({
    'swf'      : 'http://www.uploadify.com/uploadify/uploadify.swf',
    'uploader' : 'http://www.uploadify.com/uploadify/uploadify.php'
});
$("#container").draggable();

参考:http://jsfiddle.net/axzdR/19/

4个回答

19

IE9似乎存在与SWFUpload嵌入相关的错误,如果您尝试在元素上调用“getAttribute/removeAttribute/setAttribute”,将会引发“object expected”错误。我发现swfupload.js中的cleanUp()函数会从IE9中的对象DOM中删除所有js函数,包括“getAttribute/removeAttribute/setAttribute”。

为了解决这个问题:

在SWFUpload.prototype.cleanUp中:

更改:

if (typeof (movieElement[key]) === "function")

收件人:

if (typeof (movieElement[key]) === "function" && key[0] <= 'Z') // Remove only Flash functions (starts with capital letters). 

上传插件的修补版本存放在此位置。

http://www.dariowiz.com/scripts/jquery.uploadify3.1Fixed.js

祝好。


1
哇,它像魔法一样运作。我认为你应该因此获得“先生”的称号。 - sandeep
@eHussain 如果我能亲你一口,我会的。我已经为了上传插件挣扎了两天,试图在一个大型插件中找到错误,认为是我自己错过了什么,上下浏览互联网论坛却找不到解决方案。直到现在。非常感谢。 如果修复程序被纳入插件的生产版本中,那就更好了,但无论如何,现在它对我有效。 - Malis
注意:这里提出的代码更改确实解决了我的问题 - 但指示它指向“修补过的”Uploadify版本的链接似乎没有包含建议的更改。我仍然不得不进行修改。 - David Tansey
通过在页面上动态添加uploadify,我解决了在IE中出现问题的情况。非常感谢@eHussain!不过链接已经失效了。我还从这里更新了swf upload的版本:https://github.com/WordPress/secure-swfupload - lopsided
补丁不可用 :( - Imad

2

尝试使用最新版本的jQuery(在IE9中容器可拖动,且“Object expected”错误消失)。

 <script type="text/javascript"
 src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 <script type="text/javascript"
 src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>

请确保您已经安装了IE的Flash播放器(它是单独安装的)。可以从这里下载:http://get.adobe.com/flashplayer/otherversions/ 但是,即使Unloadify的演示在我的IE9中也无法正常工作(我可以点击选择文件按钮一分钟而没有结果,突然间没有原因它开始工作并打开选择文件对话框)。

在我的项目中,我必须坚持使用旧版的jQuery和UI版本。 - sandeep

1

0

看起来在上传插件uploadify的源代码中存在一个问题,它与IE 9中的jquery UI发生了冲突。具体来说,问题出现在swfupload实用程序中。为了修复这个问题,你需要进行一些小的修改,这里有详细的步骤:http://www.uploadify.com/forum/#/discussion/comment/19212

抱歉,我无法在不设置整个测试环境的情况下验证这个问题。这不是可以简单放在JSFiddle中的事情。祝你好运,如果你成功了,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接