我正在使用visio web access web部件.In VWA在SharePoint-2013中处理visio,我能够读取所有的形状,并在那里通过显示形状文本。现在微软发布了新的javascript api。它将获取visio文件的url,并在单击名为initEmbeddedframe的按钮时显示Visio。
他们还给出了另一个按钮,点击这个按钮,所选的形状文本就会捕捉到getSelectedShapeText()方法的display.But块。因为我是sharepoint和Visio的新手,所以我需要你们的帮助。
想提供的代码,需要嵌入在脚本编辑器网页的sharepoint网页aprt。
<script src='https://visioonlineapi.azurewebsites.net/visio.js' type='text/javascript'></script>
Enter Visio File Url:<br/>
<script language="javascript">
document.write("<input type='text' id='fileUrl' size='120'/>");
document.write("<input type='button' value='InitEmbeddedFrame' onclick='initEmbeddedFrame()' />");
document.write("<br />");
document.write("<input type='button' value='SelectedShapeText' onclick='getSelectedShapeText()' />");
document.write("<textarea id='ResultOutput' style='width:350px;height:60px'> </textarea>");
document.write("<div id='iframeHost' />");
var textArea;
// Loads the Visio application and Initializes communication between devloper frame and Visio online frame
function initEmbeddedFrame() {
textArea = document.getElementById('ResultOutput');
var url = document.getElementById('fileUrl').value;
if (!url) {
window.alert("File URL should not be empty");
}
// APIs are enabled for EmbedView action only.
url = url.replace("action=view","action=embedview");
url = url.replace("action=interactivepreview","action=embedview");
var session = new OfficeExtension.EmbeddedSession(url, { id: "embed-iframe",container: document.getElementById("iframeHost") });
return session.init().then(function () {
// Initilization is successful
textArea.value = "Initilization is successful";
OfficeExtension.ClientRequestContext._overrideSession = session;
});
}
// Code for getting selected Shape Text using the shapes collection object
function getSelectedShapeText() {
Visio.run(function (ctx) {
var page = ctx.document.getActivePage();
var shapes = page.shapes;
shapes.load();
return ctx.sync().then(function () {
textArea.value = "Please select a Shape in the Diagram";
for(var i=0; i<shapes.items.length;i++)
{
var shape = shapes.items[i];
if ( shape.select == true)
{
textArea.value = shape.text;
return;
}
}
});
}).catch(function(error) {
textArea.value = "Error: ";
if (error instanceof OfficeExtension.Error) {
textArea.value += "Debug info: " + JSON.stringify(error.debugInfo);
}
});
}
</script>
问题是单击所选形状文本按钮时出现错误。
任何帮助将大大appreciated.Let我知道如果有任何问题,如果你还没有理解我的问题。
发布于 2017-06-04 05:09:31
您要输入哪个URL?它应该看起来像这样:
..../_layouts/15/WopiFrame.aspx?sourcedoc=%7BXXX-XXX-XX%7D&file=Drawing4.vsdx&action=embedView
也就是说,您可以在SharePoint中打开Visio图表,从地址栏复制URL并将其粘贴到该字段中(将XXXX替换为您的值)。如果不起作用,请将末尾的"default“替换为"embedView”。
https://stackoverflow.com/questions/43187057
复制相似问题