【发布时间】:2018-04-03 04:11:18
【问题描述】:
我正在使用相同的代码库创建动态网站,我需要根据某些逻辑在其中显示适当的 Google 广告 Javascript 代码。
在我的 .Net 4、MVC3 环境中,我设置了以下场景:
导航到 www.mysite.com/script_processor/ 返回以下文本:
function doAlert(v1, v2){alert('Called alert()' + v1 + ' : ' + v2);}
这段文字来自我的模型:
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;
}
导航到路线时,我看到弹出窗口和“测试注入的 Javascript”。在页面上。
当我从站点 2 引用此内容时,我没有看到弹出窗口,也没有在页面源代码中看到“测试注入的 Javascript”。
正如我所提到的,我稍后将用相应的 Google Ads js 代码的 JS 代码替换它。
我认为这不太正确......我错过了什么?
谢谢。
【问题讨论】:
-
如果您的目标是能够在页面上包含外部 javascript 并让外部 javascript 更改页面内容,以便您在查看源代码时看到更改后的内容,它赢了不行。
-
不,我只想动态设置页面上显示的 javascript。因此请求进入 /script_processor/,并返回需要从调用它的站点可见的适当 Javascript。
标签: javascript asp.net-mvc asp.net-mvc-3 dynamic