尝试运行由我的代码隐藏编写的JavaScript
本文关键字:JavaScript 隐藏 代码 试运行 我的 | 更新日期: 2023-09-27 18:37:15
我正在尝试运行一些由我的代码隐藏文档创建的javascript代码。
<script type="text/javascript">
function GetMap() {
//some javascript
}
function AssetDescription(var1, var2, var3) {
//some javascript using var1, var2, and var3
}
function test() {
alert("test position 1");
var onloadText = document.getElementById("points").value;
alert(onloadText);
eval(onloadText);
alert("after eval");
}
window.onload = test;
</script>
<body runat="server">
<input type="hidden" id="points" runat="server" />
</body>
代码隐藏
protected void Page_Load(object sender, EventArgs e) {
points.Attributes.Add("value", Iterations());
}
public string Iterations() {
string toReturn = "GetMap(); 'n";
//assetRow is an array of strings. The strings are in the format "var1, var2, var3"
for (i=0; i<numberOfAssets; i++)
{
toReturn = toReturn + "AssetDescription("+assetRow[i]+"); 'n";
}
return toReturn;
}
希望我已经尽可能清楚地说明了所有这些。这是我认为与我的问题相关的所有代码。我对其他设置方式持开放态度。
我尝试将body.onload元素设置为直接从代码隐藏中包含我的javascript,但无济于事。我想直接在我的标签中添加此代码,但我认为 ASPX 没有该功能,因此这是我创建的解决方法。
这似乎是我发现的最有前途的方法。我搜索了这些论坛,你们中的大多数人都说 eval() 是个坏主意。不用说,它甚至不起作用。但如果有的话,我希望有一个更强大的替代方案。
alert("after eval")
警报永远不会触发,但alert("test position 1")
和alert(onloadText)
都会触发。
而不是将其设置为 和 html 元素并使用 eval 来运行它,您可以创建一个公共变量,并将公共变量打印到页面上。这意味着将打印变量的字符串内容,这将是要运行的 JavaScript。
所以前端
<script type="text/javascript">
function GetMap() {
//some javascript
}
function AssetDescription(var1, var2, var3) {
//some javascript using var1, var2, and var3
}
function test() {
alert("test position 1");
<%= generatedScript %>
alert("after eval");
}
window.onload = test;
</script>
<body runat="server">
<input type="text" id="points" runat="server" />
</body>
代码隐藏
public string generatedScript = string.empty;
public string Iterations() {
string generatedScript = "GetMap(); 'n";
//assetRow is an array of strings. The strings are in the format "var1, var2, var3"
for (i=0; i<numberOfAssets; i++)
{
generatedScript = generatedScript + "AssetDescription("+assetRow[i]+"); 'n";
}
}
应该没问题!