2016-08-31 3 views
0

私が進めているプロジェクトの一部として、Webブラウザコントロールを持つWinFormアプリケーションがあります。そのコントロールから、ローカルネットワーク上の共有フォルダにあるhtmlファイルを呼び出しています。そのフォルダには、クライアントが時々切り替えることができる様々な画像もあります。javascriptファイルAPIのWebブラウザのサポート

すべてこれは問題ありませんが、いくつかのjavascriptを使用して、そのフォルダを見て、すべての画像を読み込み、スライドショーとしてこれらの画像を表示するためにsliderman.jsを使用します。私はJavaScriptを使用して、すべてあまりにも精通していないけど、基本的には、擬似コードで、これは私が達成しようとしているものです:

<html> 
    <body> 
    <script type="text/javascript"> 
     function PageRefreshTimer(){ 
     } 

     function GetFiles(){ 
     //gets files from local network location (ie: \\192.168.1.2\sharedfolder) 

     for each file in folder { 
      //add <img> tag to page for the image 
     } 
     } 
    </script> 
    </body> 
</html> 

は、私がこれまでに成し遂げてきたことはこれです:

<div id="slider_container_3"> 

      <div id="SliderName_3" class="SliderName_3"> 
       <!-- images will be inserted here --> 
       <script type="text/javascript"> 
       window.alert("found script"); 

       if (window.File && window.FileReader && window.FileList && window.Blob) { 
        //do your stuff! 
       } else { 
        alert('The File APIs are not fully supported by your browser.'); 
       } 
       </script> 

       <img src="../01.jpg" width="800" height="200" alt="" title="" /> 
       <img src="../02.jpg" width="800" height="200" alt="" title="" /> 
      </div> 
      <div class="c"></div> 

      <script type="text/javascript"> 
       //scripting for sliderman.js 
       demo3Effect1 = {name: 'myEffect31', top: true, move: true, duration: 400}; 
       demo3Effect2 = {name: 'myEffect32', right: true, move: true, duration: 400}; 
       demo3Effect3 = {name: 'myEffect33', bottom: true, move: true, duration: 400}; 
       demo3Effect4 = {name: 'myEffect34', left: true, move: true, duration: 400}; 
       demo3Effect5 = {name: 'myEffect35', rows: 3, cols: 9, delay: 50, duration: 100, order: 'random', fade: true}; 
       demo3Effect6 = {name: 'myEffect36', rows: 2, cols: 4, delay: 100, duration: 400, order: 'random', fade: true, chess: true}; 

       effectsDemo3 = [demo3Effect1,demo3Effect2,demo3Effect3,demo3Effect4,demo3Effect5,demo3Effect6,'blinds']; 

       var demoSlider_3 = Sliderman.slider({container: 'SliderName_3', width: 800, height: 200, effects: effectsDemo3, display: {autoplay: 10000}}); 
      </script> 
      <div class="c"></div> 

     </div> 

場合私はすでにそこにタグを持って、それはそれが想定されているようにスライドショーを実行します。ただし、プログラムクラスのAPIをサポートしているかどうかをチェックすると、サポートされていないというメッセージが送信されます。これの背後にある推論?

これは、C#WebブラウザコントロールでのAPIのサポートが不足していることによるものですか?

+0

[Chromiumベースのブラウザコントロール](https://github.com/cefsharp/CefSharp)を代わりに使用してください。 – Crowcoder

+0

@Crowcoderというのは、winformのコードは私たちの開発者だけが利用できるからです。変更する代わりに、フォルダにファイルを置くことを要求したクライアントのhtmlファイルを作成しようとしていますwinformの設定を開き、新しい画像を表示するために再度開きます – Termonator145

+0

あなたのアプリケーションを更新してリリースすることはできませんか? IEベースの制御は古くて老朽化しています。シンプルなHTMLよりもはるかに多くのことをすれば、あらゆる種類の問題を抱えています。 – Crowcoder

答えて

1

Internet Explorer 11は、ファイルAPIをサポートする最初のバージョンですが、部分的にしか使用できません(Fileコンストラクタはサポートしていません)。いつでもforce the Windows Forms WebBrowser to use the latest IE versionは可能ですが、クライアントのマシンにインストールする必要があります。

要約すると、WebBrowserコントロールを使用するときに、クライアントが実行しているバージョンに依存しているため、大したことはないと思います。

編集:あなたはたとえばIE 11がマシンにインストールされている場合でも、WebBrowserコントロールを簡単にVersionプロパティを使用して確認することができますIE 9、などの古いバージョンを使用することがあります。

クライアントにIE 11(バージョンなどを確認した後にインストールを促すメッセージが表示される)を強制的にインストールすることができれば、それを有効にしてFiles APIの部分実装を使用できます。

+0

私はその仕事をする可能性があります。私はそれを試してみなければならない。 – Termonator145

+0

@ Termonator145幸運を祈る! – hankide

+1

私はIE11を使用するためにレジストリを変更して終了し、代わりにこの問題を回避するためにactiveXobjectsを使用するIEオプションでローカルサイトを変更しました。 – Termonator145

関連する問題