0

Google Chrome では動作するが IE9 では動作しない SP2010 ビジュアル Web パーツに以下の JavaScript コードがあります。Dropbox Chooser の Web サイトによると、 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でしたが、これを試す機会がありました。コードはうまくいきました。)

2 番目の例では、パラメーターとして渡す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 に答える