Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在_Host.cshtml中使用变量_Javascript_Blazor_Blazor Server Side - Fatal编程技术网

Javascript 在_Host.cshtml中使用变量

Javascript 在_Host.cshtml中使用变量,javascript,blazor,blazor-server-side,Javascript,Blazor,Blazor Server Side,我有一个应用程序,它在我的head标记中加载来自第三方供应商的JavaScript库,该标记位于_Host.cshtml上。根据浏览器请求,我需要交换src属性并加载不同的库,因为src链接将更改 <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />

我有一个应用程序,它在我的head标记中加载来自第三方供应商的JavaScript库,该标记位于_Host.cshtml上。根据浏览器请求,我需要交换src属性并加载不同的库,因为src链接将更改

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>PictometryHost</title>
<base href="~/" />
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
<link href="css/site.css" rel="stylesheet" />

<!-- include the IPA JS Library from pictometry -->
<script type="text/javascript" src="http://pol.pictometry.com/ipa/v1/embed/host.php?apikey=someapikey"></script> <----This right here I need to change on the fly.
<script src="~/Pictometry.js"></script>

象形文字

有一种方法可以在页面中动态加载脚本。但你所建议的方式行不通。相反,请使用我在另一个StackOverflow上找到的以下进程:

创建一个名为
scriptLoader.js的js文件

//加载脚本:返回在加载脚本时完成的承诺
window.loadScript=函数(scriptPath){
//检查列表-如果已经加载,我们可以忽略
如果(已加载[scriptPath]){
log(scriptPath+“已加载”);
//返回“空”承诺
返回新的this.Promise(函数(解析、拒绝){
解决();
});
}
返回新承诺(功能(解决、拒绝){
//创建JS库脚本元素
var script=document.createElement(“脚本”);
script.src=scriptPath;
script.type=“text/javascript”;
log(scriptPath+“已创建”);
//标记为正在加载/已加载
加载的[scriptPath]=true;
//如果脚本返回OK,则返回resolve
script.onload=函数(){
log(脚本路径+“加载正常”);
解析(脚本路径);
};
//如果失败,返回reject
script.onerror=函数(){
log(脚本路径+“加载失败”);
拒绝(脚本路径);
}
//脚本将在正文末尾加载
文件[“正文”]。追加子文件(脚本);
});
}
//存储已加载脚本的列表
加载=[];
上述代码的目的是在需要时在页面上创建一个
标记,例如打开一个新页面时

接下来,让我们插入并使用著名的
IJsRuntime
接口与上述js文件对话:

AfterRenderAsync(bool firstRender)上的受保护重写异步任务
{
//调用脚本加载程序
等待jsRuntime.InvokeVoidAsync(“加载脚本”)https://code.jquery.com/jquery-3.4.1.js");
等待jsRuntime.InvokeVoidAsync(“loadScript”、“myJQueryTest.js”);
等待jsRuntime.InvokeVoidAsync(“setH1”,“HelloWorld!”);
}
如您所见,我们加载了2个js文件,一个jquery库,另一个是我们的自定义
myJQueryTest.js
js文件。还可以在我们的自定义库中设置方法
setH1

window.setH1=函数(消息){
$('h1')。文本(消息);
}