Mis*_*pic 9 javascript powerbi
我正在构建一个自定义Power BI可视化,因此我可以访问平台使用的javascript文件.我无权访问任何标记,只有一个元素被注入到我可以挂载可视化的位置.
我正在尝试安装Bing Map,文档看起来像这样:
<div id='myMap' style='width: 100vw; height: 100vh;'></div>
<script type='text/javascript'>
var map;
function loadMapScenario() {
map = new Microsoft.Maps.Map(document.getElementById('myMap'), {});
}
</script>
<script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?key=YourBingMapsKey&callback=loadMapScenario' async defer></script>
Run Code Online (Sandbox Code Playgroud)
脚本的URL有一个callback
查询字符串参数,其中包含要调用的函数的名称.
鉴于我无法访问标记,我正在尝试在可视化构造函数中动态执行所有操作.我创建一个函数,将其移动到全局范围,然后我添加querystring var来引用它,但它永远不会被调用.你能看到我可能遗失的任何东西吗?
constructor(options: VisualConstructorOptions) {
this.host = options.host;
this.elem = options.element;
const self = this;
function moveMethodsIntoGlobalScope(functionName){
var parts = functionName.toString().split('\n');
eval.call(window, parts.splice(1, parts.length - 2).join(''));
}
function methodsToPutInGlobalScope(){
function loadMapScenario(){
console.log("finally called loadMapScenario");
}
}
const script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
console.log(loadMapScenario === undefined); // false, definitely in global scope
script.src = 'https://www.bing.com/api/maps/mapcontrol?key=xxxxxxxxxx&callback=loadMapScenario';
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)
我认为这段代码就足够了:
window.loadMapScenario = function() {
console.log("finally called loadMapScenario");
}
const script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = `https://www.bing.com/api/maps/mapcontrol?key=${API_KEY}&callback=loadMapScenario`;
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)
这是一个 JSFiddle,您可以使用 API_KEY 尝试:https ://jsfiddle.net/9mfzrcfd/2/
归档时间: |
|
查看次数: |
514 次 |
最近记录: |