如何使用 Tableau Javascript API 将仪表板嵌入 Tableau Online 托管的网页中?
How do I use the Tableau Javascript API to embed dashboards in a webpage for dashboards hosted in Tableau Online?
我正在尝试重新创建 the example provided by Tableau here with a dashboard that is hosted in Tableau Online. A separate article from Tableau talks about modifying the URL of the JS API based on where the dashboard is hosted,我已尝试遵循它。
尽管生成的嵌入需要显示登录信息,但我希望该登录信息显示在我网页上嵌入的 output/iframe 中。请参考附带的代码。相反,我收到 CORS 错误:
Refused to display 'https://10ay.online.tableau.com/site/jpl/views/JPLDashboard_V05_JUE/Awareness?:iid=2&:size=800,700&:embed=y&:showVizHome=n&:bootstrapWhenNotified=y&:tabs=n&:apiID=host0#navType=1&navSrc=Parse' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
我采用的方法是否正确?如果可以使用 JS API 嵌入 Tableau Online 仪表板,我该如何避免 CORS 错误?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>JPL Dashboard</title>
<script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau-2.min.js"></script>
<script type="text/javascript">
function initViz() {
var containerDiv = document.getElementById("vizContainer"),
//url = "http://public.tableau.com/views/RegionalSampleWorkbook/Storms",
url = "https://10ay.online.tableau.com/site/jpl/views/JPLDashboard_V05_JUE/Awareness?:iid=2",
options = {
hideTabs: true,
onFirstInteractive: function() {
console.log("Run this code when the viz has finished loading.");
}
};
var viz = new tableau.Viz(containerDiv, url, options);
}
</script>
</head>
<body>
<div id="vizContainer" style="width:800px; height:700px;"></div>
<script type="text/javascript">
(function () {
window.onload = function () {
initViz();
};
})();
</script>
</body>
</html>
确保用于嵌入视图的 URL 来自 Tableau Online 中的“共享”选项:
- 在 Tableau Online 中,导航到遇到问题的视图。
- 单击“共享”按钮。
- 在 Link 部分复制 URL link。
- 将嵌入代码配置为使用此 URL 而不是浏览器地址栏中的 Tableau Online URL。
如果正确,尝试在HTMLheader
中添加:<meta http-equiv="X-Frame-Options" content="allow">
希望对您有所帮助,
吉吉
我正在尝试重新创建 the example provided by Tableau here with a dashboard that is hosted in Tableau Online. A separate article from Tableau talks about modifying the URL of the JS API based on where the dashboard is hosted,我已尝试遵循它。
尽管生成的嵌入需要显示登录信息,但我希望该登录信息显示在我网页上嵌入的 output/iframe 中。请参考附带的代码。相反,我收到 CORS 错误:
Refused to display 'https://10ay.online.tableau.com/site/jpl/views/JPLDashboard_V05_JUE/Awareness?:iid=2&:size=800,700&:embed=y&:showVizHome=n&:bootstrapWhenNotified=y&:tabs=n&:apiID=host0#navType=1&navSrc=Parse' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
我采用的方法是否正确?如果可以使用 JS API 嵌入 Tableau Online 仪表板,我该如何避免 CORS 错误?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>JPL Dashboard</title>
<script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau-2.min.js"></script>
<script type="text/javascript">
function initViz() {
var containerDiv = document.getElementById("vizContainer"),
//url = "http://public.tableau.com/views/RegionalSampleWorkbook/Storms",
url = "https://10ay.online.tableau.com/site/jpl/views/JPLDashboard_V05_JUE/Awareness?:iid=2",
options = {
hideTabs: true,
onFirstInteractive: function() {
console.log("Run this code when the viz has finished loading.");
}
};
var viz = new tableau.Viz(containerDiv, url, options);
}
</script>
</head>
<body>
<div id="vizContainer" style="width:800px; height:700px;"></div>
<script type="text/javascript">
(function () {
window.onload = function () {
initViz();
};
})();
</script>
</body>
</html>
确保用于嵌入视图的 URL 来自 Tableau Online 中的“共享”选项:
- 在 Tableau Online 中,导航到遇到问题的视图。
- 单击“共享”按钮。
- 在 Link 部分复制 URL link。
- 将嵌入代码配置为使用此 URL 而不是浏览器地址栏中的 Tableau Online URL。
如果正确,尝试在HTMLheader
中添加:<meta http-equiv="X-Frame-Options" content="allow">
希望对您有所帮助, 吉吉