【问题标题】:Cannot Find Placeholder Element in SWFUpload在 SWFUpload 中找不到占位符元素
【发布时间】:2009-12-25 23:31:45
【问题描述】:

我正在尝试在我拥有的表单上实现 SWFUpload。但是,它没有识别占位符。我的代码在下面,有人可以帮忙吗?如果有帮助,我正在使用 jQuery。

标题:

<script type="text/javascript" src="{{ MEDIA_URL }}/js/SWFUpload-2.5.0/swfupload/swfupload.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}/js/SWFUpload-2.5.0/swfupload/swfupload.cookies.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}/js/foo.js"></script>
<script type="text/javascript">
    $(swfupload("{% url swfupload %}","{{ MEDIA_URL }}/js/SWFUpload-2.5.0/swfupload/swfupload.swf"));       
</script>

主体:

<div id="upload_btn"></div>

Javascript (foo.js):

swfupload = function(upload_url, flash_url) {
    var swfupload_real = new SWFUpload({
        debug: false,
        upload_url: upload_url,
        flash_url: flash_url,
        button_placeholder_id: "upload_btn",
        button_width: "40",
        button_height: "16",
        button_cursor: SWFUpload.CURSOR.HAND,
        button_text: "Click",
        file_size_limit: "20 MB",
        file_dialog_complete_handler: function() { this.startUpload(); },
        upload_complete_handler: function() { this.startUpload(); },
    });
};

编辑:我尝试查看 SWFUpload.js 的源代码,发现在它试图查找元素时,它会这样做:

targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;

我试着看看发生了什么,令人难以置信的是,document.GetElementByID 返回 null 而 $('#'+this.settings.button_placeholder_id) 返回对象!我宁愿不修改库以使用另一个依赖项。有谁知道为什么会这样?

【问题讨论】:

  • 我应该补充一点,我正在使用最新版本的 SWFUpload(版本 2.5.0 Beta 1 Core)
  • 如果我将它直接包含在脚本标签中而不是作为外部文件,我可以让它工作。也许它与脚本运行时有关?我将它分配给 window.onload 但无济于事。

标签: jquery django swfupload


【解决方案1】:

我的 javascript 是 fubared。解决方法如下:

<script type="text/javascript">
    upload_url = "{% url edit-story-swfupload %}";
    flash_url = "{{ MEDIA_URL }}/js/SWFUpload-2.5.0/swfupload/swfupload.swf";
    window.onload = swfupload_init;
</script>


swfupload_init = function() {
    var swfupload = new SWFUpload({
            debug: false,
            upload_url: upload_url,
            flash_url: flash_url,
            button_placeholder_id: "upload_btn",
            button_width: "40",
            button_height: "16",
            button_cursor: SWFUpload.CURSOR.HAND,
            button_text: "Click",
            file_size_limit: "20 MB",
            file_dialog_complete_handler: function() { this.startUpload(); },
            upload_complete_handler: function() { this.startUpload(); },
    });
}

【讨论】:

  • swfupload_init 在哪里加载?在页面上还是来自外部脚本?
  • 我认为既然upload_url和flash_url是全局变量,应该没关系。但是,依赖外部脚本中页面中定义的全局变量是不好的做法,因此最好将其包含在页面中以提高可读性。我想我现在年纪大了,也更聪明了,我要做的是定义在外部脚本中获取 url 的函数,并在页面中定义一个包装器来调用它。包装器将分配给事件处理程序。
猜你喜欢
  • 2019-02-23
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多