3

我在 HTML 正文中有以下代码,其中包含 div 元素中的几个图像。我想捕获整个看到的,因为它在 webview 上可见。

 <div data-win-control="SdkSample.ScenarioOutput" id="grid">
  <img id ="Img0" src="/images/0.png" class="GestureTile"/>
  <img id ="Img1" src="/images/1.png" class="GestureTile"/>
  <img id ="Img2" src="/images/2.png" class="GestureTile"/>
  <img id ="Img3" src="/images/3.png" class="GestureTile"/>
  <img id ="Img4" src="/images/4.png" class="GestureTile"/>
  <img id ="Img5" src="/images/5.png" class="GestureTile"/>
  <img id ="Img6" src="/images/6.png" class="GestureTile"/>
  <img id ="Img7" src="/images/7.png" class="GestureTile"/>
  <img id ="Img8" src="/images/8.png" class="GestureTile"/>
  <img id ="Img9" src="/images/9.png" class="GestureTile"/>
 </div>

是否可以通过winjs直接捕获或者我应该采用其他方式?

谢谢,

4

2 回答 2

0

我知道这个话题有点老了,但是从 8.1 开始,您可以将 webview 内容作为 Blob 获取,然后对它进行任何您需要的操作(将其发送到服务器,创建数据 URI 并将其放入<img>. ..

myWebview.capturePreviewToBlobAsync().done(
    function(imgBlob) {
        // do whatever you need to with the Blob
    },
    function(err) {
        // handle errors... not sure what you might get here, honestly
    }
);

我还没有实现这个,所以我不能说是否有任何问题。

更新

所以我尝试实现上述内容,这就是它在文档中所说的,但它对我不起作用。我要离开它,因为下面的评论者说它对他们有用。对我来说,我不得不改用下面的代码,因为该capturePreviewToBlobAsync方法没有返回承诺。不知道为什么...

var myWebView = document.getElementById("theWebviewToCapture");
var captureOperation = myWebView.capturePreviewToBlobAsync();
captureOperation.addEventListener("complete", function (e) {
    var inputStream = e.target.result.msDetachStream();
    // Now you could copy that input stream to a file stream or whatever...
});
captureOperation.start();

查看此页面上的示例(搜索“capturePreviewToBlobAsync”)。

于 2013-11-18T19:26:01.730 回答
0

据我所知(我很乐意听到其他消息),唯一可以捕捉到的是画布的内容。我认为您无法捕获呈现的 HTML。对不起。

于 2013-02-08T15:56:17.763 回答