早些时候我曾经使用过“loadReport'来自javascript,它不适用于新的PBI Premium,例如以下不再适用&它总是说"这个内容不可用"。顺便说一句,这仍然适用于PBI嵌入式报告。
<html>
<body>
<iframe id="iFrameEmbedReport"></iframe>
</body>
<script type="text/javascript">
window.onload = function () {
var iframe = document.getElementById('iFrameEmbedReport');
iframe.src = 'https://app.powerbi.com/reportEmbed?reportId=******-088f-4967-***-279bd5a**df&groupId=*****-****-4033-862d-1cd4f4fa72c1';
iframe.onload = function()
{
var m = {
action: 'loadReport',
accessToken: 'H4s*****'
};
message = JSON.stringify(m);
iframe = document.getElementById('iFrameEmbedReport');
iframe.contentWindow.postMessage(message, "*");
};
};
</script>
</html>
&#13;
但是如果我们使用相同配置的powerbi.js,它的工作正常(下图)
<html>
<body>
<div id="reportContainer"></div>
</body>
<script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/jquery/dist/jquery.js"></script>
<script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/powerbi-client/dist/powerbi.js"></script>
<script type="text/javascript">
window.onload = function () {
var accessToken = '******************';
var embedUrl = 'https://app.powerbi.com/reportEmbed?reportId=**********&groupId=**********';
var embedReportId = '*****-088f-****-aa2d-279bd5a662df';
var models = window['powerbi-client'].models;
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: models.Permissions.All,
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true
}
};
var reportContainer = $('#reportContainer')[0];
var report = powerbi.embed(reportContainer, config);
}
</script>
</html>
&#13;
无法弄清楚改变了什么。如果不需要,我真的不想在我的应用程序中包含powerbi.js。我知道我有一个工作副本,但真的需要了解发生了什么变化,如果有任何办法我可以避免使用powerbi.js。最终目标是在UWP App中使用第一种方法。
由于
答案 0 :(得分:0)
在两种方法中改变的主要内容是属性TokenType.Embed
,它不是以“旧方式”提供的,即“loadReport”消息格式。
这是与Power BI中的嵌入式实体进行通信的一种不赞成使用的方式,鼓励所有用户针对新的和维护的Javascript SDK编写代码:https://microsoft.github.io/PowerBI-JavaScript/
'loadReport'方式适用于向后兼容性问题,但您无法使用这种方式在新方法中编写新代码。