我在我的应用程序中使用WinJS并尝试打印一些内容。根据本教程https://dzone.com/articles/windows-8-print-contract-%E2%80%93制作了我的打印机课程。
function registerForPrintContract(participiantData) {
var printManager = Windows.Graphics.Printing.PrintManager.getForCurrentView();
printManager.addEventListener("printtaskrequested", onPrintTaskRequested, false);
}
function onPrintTaskRequested(printEvent) {
var printTask = printEvent.request.createPrintTask("Print Example", function (args) {
printCurrentPage(args);
printTask.oncompleted = onPrintTaskCompleted;
});
}
function printCurrentPage(args) {
var docHtml = document.createDocumentFragment();
docHtml.appendChild(createDocumentContent());
args.setSource(MSApp.getHtmlPrintDocumentSource(docHtml));
}
function createDocumentContent() {
var container = document.createElement("div");
container.innerHTML = "<h2>" + firstname + " " + lastname + "</h2>" +
"<h4>" + emailaddress1 + "<h4>";
return container;
}
function showPrintUI() {
Windows.Graphics.Printing.PrintManager.showPrintUIAsync();
}
我的问题是我不知道如何将一些对象数据转发到createDocumentContent()函数。在这个例子中,我输入了firstname,lastname和email。那些我无法从html页面获得的数据我需要在打印按钮上发送它们。
我看到的所有示例都是关于打印当前页面或通过查询DOM从我们可以从HTML页面获取的数据创建新内容,没有我可以发送自定义对象的示例。 这样做的最佳方式是什么?
答案 0 :(得分:0)
我的问题是我不知道如何将一些对象数据转发到createDocumentContent()函数。在这个例子中,我输入了firstname,lastname和email。那些我无法从html页面获得的数据我需要在打印按钮上发送它们。
您的意思是想要将"<h2>"+firstname + " " +lastname+"</h2>"+"<h4>" + emailaddress1 + "<h4>"
的html输出放到打印页面上吗?
在Windows应用商店应用开发中,innerHTML的行为已发生变化。 请参阅HTML and DOM API changes list innerHTML部分:
内容经过过滤,因为它是由toStaticHTML方法处理的
但WinJS提供了一种可用于注入HTML的方法。
以下是此方法文档的链接:WinJS.Utilities.insertAdjacentHTML
这是一个代码片段,显示了一个简单的方法:
function createDocumentContent() {
var obj = {
firstname: "winffee",
lastname: "xia",
emailaddress1:"test@126.com"
}
var htmlString = "<h2>" + obj.firstname + " " + obj.lastname + "</h2>" +
"<h4>" + obj.emailaddress1 + "<h4>";
var container = document.createElement("div");
WinJS.Utilities.insertAdjacentHTML(container, "beforeend", htmlString);
return container;
}