0

我在一个 SP2010 可视 webpart 中有下面的 javascript 代码,它适用于谷歌浏览器,但不适用于 IE9。这是一个令人担忧的问题,因为 Dropbox 选择器网站说 addEventListener 不适用于 IE8 或更低版本。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DropboxControlUserControl.ascx.cs" Inherits="DropBoxWebPart.DropboxControl.DropboxControlUserControl" %>
<script type="text/javascript" src="https://www.dropbox.com/static/api/1/dropins.js" id="dropboxjs" data-app-key="xxxxxxxxxxxxxxx"></script>

<input type="dropbox-chooser" name="selected-file" id="db-chooser"/>
<script type="text/javascript">
   document.getElementById("db-chooser").addEventListener("DbxChooserSuccess",
     function(e) {
         window.open(e.files[0].link)
     }, false);
</script>

我尝试使用 Dropbox.chooser(options) 函数来克服这个问题,但我不确定将代码放在哪里或从哪里调用函数。我是否需要从代码隐藏中调用它,因为我试图将它放在这样的脚本中,并且还尝试使用 document.getElementById("db-chooser").on 或 .attachevent 并且无法使其工作。

<script type="text/javascript">
Dropbox.chooser(options);
options = {

        // Required. Called when a user selects an item in the Chooser.
        success: function(files) {
            alert("Here's the file link:" + files[0].link)
        },

        // Optional. Called when the user closes the dialog without selecting a file
        // and does not include any parameters.
        cancel: function() {

        },

        linkType: "preview" or "direct",     

        extensions: ['.pdf', '.doc', '.docx'],            
    };
</script>
4

1 回答 1

1

我很惊讶您的第一个示例在 IE9 中不起作用。我觉得很好。以后我自己试试。(编辑:我确实有机会尝试这个,虽然它是在 IE9 模式下的 IE10 上。代码对我来说很好。)

对于第二个示例,options直到将其作为参数传递后才进行定义。(所以您传递了一个未定义的变量,然后再定义它。)如果您只是Dropbox.choose(options);在实际定义该变量之后放置该行,我希望它可以工作。

同样,这linkType是无效的。选择一个,“预览”或“直接”。首先,尝试以下代码:

var options = {
    success: function (files) { alert(files[0].link); }
}
Dropbox.choose(options);

或者,如果您愿意:

Dropbox.choose({
    success: function (files) { alert(files[0].link); }
});

您需要运行该代码以响应用户操作(例如单击链接),这样您就不会被弹出窗口阻止程序阻止。所以是这样的:

document.getElementById('mybutton').onclick = function () {
    Dropbox.choose({
        success: function (files) { alert(files[0].link); }
    });
}
于 2013-08-23T16:40:58.493 回答