SPFx - JavaScript 函数未触发
SPFx - JavaScript function not firing
我在我的 web 部件的 render() 方法上组装了一个幻灯片组件,它显示正常,但 Javascript 操作 "ShowSlide()" 是必需的激活幻灯片未在 $().ready()
内发射
我已将呼叫置于
public render(): void {
this.domElement.innerHTML = `
<!-- build the slide here -->
<div>
<ul>
.....
..... shortened for brevity
.....
</ul>
</div>
<!-- CALL THE SLIDE using $().ready() - it doesn't work -->
<script type="text/javascript">
$(document).ready( function()
ShowSlide();
});
</script>
`;
}
我 运行 没主意了,我不知道是什么阻止了函数被触发,我添加了一个小按钮来手动调用这个函数,它在被调用时起作用从按下按钮但不按预期 $().ready()
public render(): void {
this.domElement.innerHTML = `
<!-- manual call for ShowSlide() -- it works when clicked! -->
<input type="button" value="Start Slide" onClick="ShowSlide()" />
<!-- build the slide here -->
<div>
<ul>
.....
..... shortened for brevity
.....
</ul>
</div>
<!-- CALL THE SLIDE using $().ready() - it doesn't work -->
<script type="text/javascript">
$(document).ready( function()
ShowSlide();
});
</script>
`;
}
我找到了解决问题的方法!我学会了通过在 HEAD 中创建元素来添加脚本,所以我所要做的就是:
public render(): void {
this.domElement.innerHTML = this.htmlContents;
let head: any = document.getElementsByTagName("head")[0] || document.documentElement,
script = document.createElement("script");
script.type = "text/javascript";
try {
script.appendChild(document.createTextNode(this.htmlScript));
}
catch (e) {
script.text = this.htmlScript;
}
head.insertBefore(script, head.firstChild);
head.removeChild(script);
}
我希望这能帮助遇到同样问题的任何人,我花了 4 天的时间研究、谷歌搜索、阅读所有我能做的事情,直到我在博客上找到一篇关于在 SPFx 中调用 Azure 函数的文章,从那里我可以获得连接点的灵感并解决我的问题!
我在我的 web 部件的 render() 方法上组装了一个幻灯片组件,它显示正常,但 Javascript 操作 "ShowSlide()" 是必需的激活幻灯片未在 $().ready()
我已将呼叫置于
public render(): void {
this.domElement.innerHTML = `
<!-- build the slide here -->
<div>
<ul>
.....
..... shortened for brevity
.....
</ul>
</div>
<!-- CALL THE SLIDE using $().ready() - it doesn't work -->
<script type="text/javascript">
$(document).ready( function()
ShowSlide();
});
</script>
`;
}
我 运行 没主意了,我不知道是什么阻止了函数被触发,我添加了一个小按钮来手动调用这个函数,它在被调用时起作用从按下按钮但不按预期 $().ready()
public render(): void {
this.domElement.innerHTML = `
<!-- manual call for ShowSlide() -- it works when clicked! -->
<input type="button" value="Start Slide" onClick="ShowSlide()" />
<!-- build the slide here -->
<div>
<ul>
.....
..... shortened for brevity
.....
</ul>
</div>
<!-- CALL THE SLIDE using $().ready() - it doesn't work -->
<script type="text/javascript">
$(document).ready( function()
ShowSlide();
});
</script>
`;
}
我找到了解决问题的方法!我学会了通过在 HEAD 中创建元素来添加脚本,所以我所要做的就是:
public render(): void {
this.domElement.innerHTML = this.htmlContents;
let head: any = document.getElementsByTagName("head")[0] || document.documentElement,
script = document.createElement("script");
script.type = "text/javascript";
try {
script.appendChild(document.createTextNode(this.htmlScript));
}
catch (e) {
script.text = this.htmlScript;
}
head.insertBefore(script, head.firstChild);
head.removeChild(script);
}
我希望这能帮助遇到同样问题的任何人,我花了 4 天的时间研究、谷歌搜索、阅读所有我能做的事情,直到我在博客上找到一篇关于在 SPFx 中调用 Azure 函数的文章,从那里我可以获得连接点的灵感并解决我的问题!