我正在尝试使小部件正常工作,但是在页面加载后我需要调用src,以便我的函数有时间运行,现在我遇到了无法正常工作的问题。我需要做的就是能够在函数完成后调用src。我已经附加了我的代码,对不起,这是我的第一次编码。
<script>
var hi = "3911 e Douglas loop"
var src1
function init() {
window.onmessage = (event) => {
hi = event.data;
src1 = "//www.narrpr.com/widgets/avm-widget/widget.ashx/script"
injectScript("//www.narrpr.com/widgets/avm-widget/widget.ashx/script")
}
}
var rprAvmWidgetOptions = {
Token: "742980EF-52EE-46F2-AEFB",
Query: hi,
CoBrandCode: "btso48",
ShowRprLinks: false
}
function injectScript(src) {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.async = true;
script.src = src;
script.addEventListener('load', resolve);
script.addEventListener('error', () => reject('Error loading script.'));
script.addEventListener('abort', () => reject('Script loading
aborted.'));
document.head.appendChild(script);
});
}
</script>
<script src = src1 > </script>
<body onload="init();" style="background-color:transpartnt;">
这是我实际上需要工作的所有代码,除了,不是因为src分解速度太快,所以我的函数无法运行并获取全局var并将其分配给rprAvmWidgetOptions var。
<head>
<script>
var hi = "3919 e douglas loop"
function init() {
window.onmessage = (event) => {
hi = event.data;
}
}
var rprAvmWidgetOptions = {
Token: "742980EF-52EE-46F2-AEFB",
Query: hi,
CoBrandCode: "btso48",
ShowRprLinks: false
}
</script>
</head>
<script src = "//www.narrpr.com/widgets/avm-widget/widget.ashx/script" >
</script>
<body onload="init();" style="background-color:transpartnt;">
因此,我需要稍后加载src,然后我的函数将分配“ hi” var,并且一切正常。所以我需要一些延迟。如果我可以从HTML内部调用src,那就太完美了。
答案 0 :(得分:0)
您是否已将script
放在head
中?最好将其放在正文的末尾,以便允许HTML元素首先加载,然后执行脚本。
答案 1 :(得分:-1)
尝试在代码段中运行代码可能会有所帮助。
您可以通过单击<>图标在StackOverFlow上创建一个片段。
例如,这是HTML和JavaScript的简单片段:
console.log('hello, javascript')
<div>
Hello, HTML
<div>
请注意,您的HTML src应该指向带引号的字符串。