gpt4 book ai didi

javascript - 动态编写 Javascript 代码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:20:57 24 4
gpt4 key购买 nike

我正在使用相同的代码库创建动态网站,我需要根据某些逻辑在其中显示适当的 Google 广告 Javascript 代码。

在我的 .Net 4、MVC3 环境中,我设置了以下场景:

导航到 www.mysite.com/script_processor/返回以下文本:

function doAlert(v1, v2){alert('Called alert()' + v1 + ' : ' + v2);}

这段文字来 self 的模型:

page.stringResponse = "function doAlert(v1, v2){alert('Called alert()' + v1+ ' : ' + v2);}";   

然后我可以从单独的站点/页面执行类似的操作:

<script type="text/javascript" src="http://mysite.com/script_processor/">
</script>
<script type="text/javascript">
doAlert('string 1', 'string 2');
</script>

如您所料,我收到一个警告框,其中包含“Called alert() string 1 : string 2”,因此可以从站点 2 访问 mysite.com 上的函数。

显然,当我从页面查看源代码时,我只能看到 doAlert() 调用,而看不到位于 mysite.com 上的函数的内容。

现在,我想要一个动态写出 javascript 的函数,而不是 mysite.com 上的 doAlert(),当它被调用时可以在站点 2 上看到。

我创建了一个模型方法:

public GetResponsePage GetPageResponse(string V1, string V2)
{
var page = new GetResponsePage();
page.stringResponse = "<script type=\"text/javascript\">document.write('testing injected Javascript.');alert('value of v1: " + V1 + "value of v2: " + V2 + "');</script>";
return page;
}

导航到路线时,我看到弹出窗口和“测试注入(inject)的 Javascript”。在页面上。

当我从站点 2 引用它时,我没有看到弹出窗口,也没有在页面源代码中看到“测试注入(inject)的 Javascript”。

正如我提到的,稍后我会将其替换为相应 Google Ads js 代码的 JS 代码。

我不认为这工作得很好......我错过了什么?

谢谢。

最佳答案

您可以使用永远邪恶的eval 来动态执行JavaScript。您传入的 JavaScript 也可以声明函数。

eval("function doAlert(v1, v2){alert('Called alert()' + v1 + ' : ' + v2);}");

我不确定确切您想要完成什么,但是您可以在任何您想要的地方进行这样的 eval 调用:

function createDoAlertFunction(){
eval("function doAlert(v1, v2){alert('Called alert()' + v1 + ' : ' + v2);}");
}

不过请注意,这应该避免。坚持以老式的方式声明您的功能,就像您已经这样做的那样。

编辑

哦,您希望 MVC 动态注入(inject) JavaScript。 MVC 有一个 JavaScriptResult,但看起来它的使用是强烈的,强烈不鼓励的。

不过,这里有一个 link这表明它的用途

public ActionResult DoSomething() {  
string s = "$('#some-div').html('Updated!');";
return JavaScript(s);
}

为什么这不是一个好主意

关于javascript - 动态编写 Javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com