C# Web 浏览器支持 javascript 个文件 API
C# Web Browser support for javascript Files API
作为我正在处理的项目的一部分,我们有一个 WinForm 应用程序,上面有一个 Web 浏览器控件。从该控件中,我正在调用一个 html 文件,该文件将位于本地网络上的共享文件夹中。在那个文件夹里,还有各种图片,客户可能不时想要切换出来。
一切都很好,但我正在尝试使用 html 文档,其中一些 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>
如果我已经有标签,它会按预期运行幻灯片。但是,当它检查是否支持程序 class 中的 API 时,它会发送不支持的消息。这背后有什么原因吗?
这仅仅是因为 C# Web 浏览器控件中缺少对 API 的支持吗?
Internet Explorer 11 是第一个支持文件 API 的版本,但只是部分支持(不支持文件构造函数)。你总是可以 force the Windows Forms WebBrowser to use the latest IE version 但它必须安装在客户端的机器上。
总而言之,我认为您在使用 WebBrowser 控件时运气不会太好,因为它非常依赖于客户端的版本 运行。
编辑: 即使您的计算机上安装了 IE 11,WebBrowser 控件也可能使用旧版本,如 IE 9,可以使用Version 属性.
如果可以强制您的客户端安装 IE 11(在检查版本或其他内容后提示安装),那么您可以启用它并使用文件的部分实现 API.
作为我正在处理的项目的一部分,我们有一个 WinForm 应用程序,上面有一个 Web 浏览器控件。从该控件中,我正在调用一个 html 文件,该文件将位于本地网络上的共享文件夹中。在那个文件夹里,还有各种图片,客户可能不时想要切换出来。
一切都很好,但我正在尝试使用 html 文档,其中一些 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>
如果我已经有标签,它会按预期运行幻灯片。但是,当它检查是否支持程序 class 中的 API 时,它会发送不支持的消息。这背后有什么原因吗?
这仅仅是因为 C# Web 浏览器控件中缺少对 API 的支持吗?
Internet Explorer 11 是第一个支持文件 API 的版本,但只是部分支持(不支持文件构造函数)。你总是可以 force the Windows Forms WebBrowser to use the latest IE version 但它必须安装在客户端的机器上。
总而言之,我认为您在使用 WebBrowser 控件时运气不会太好,因为它非常依赖于客户端的版本 运行。
编辑: 即使您的计算机上安装了 IE 11,WebBrowser 控件也可能使用旧版本,如 IE 9,可以使用Version 属性.
如果可以强制您的客户端安装 IE 11(在检查版本或其他内容后提示安装),那么您可以启用它并使用文件的部分实现 API.