Не удается найти заполнитель в SWFUpload - PullRequest
1 голос
/ 26 декабря 2009

Я пытаюсь реализовать загрузку SWFU в форме, которую я имею. Тем не менее, это не определение заполнителя. Мой код ниже, кто-то может помочь? Я использую 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>

Body:

<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 возвращает ноль, а $('#'+this.settings.button_placeholder_id) возвращает объект! Я бы предпочел не изменять библиотеку, чтобы использовать другую зависимость. Кто-нибудь знает, почему это может быть?

1 Ответ

0 голосов
/ 26 декабря 2009

Мой 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(); },
    });
}
...