如何在运行时向页面添加javascript代码?

时间:2012-11-07 15:26:13

标签: javascript asp.net html recaptcha

我有以下脚本和noscript javascript代码:

<script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=6LfWqtgSAAAAAP1KwYFYGt0wDeJFtxznmqyRH_Q5">   </script>
    <noscript>
        <iframe src="https://www.google.com/recaptcha/api/noscript?k=6LfWqtgSAAAAAP1KwYFYGt0wDeJFtxznmqyRH_Q5"
            height="300" width="500" frameborder="0"></iframe>
        <br>
        <textarea name="recaptcha_challenge_field" rows="3" cols="40">      </textarea>
        <input type="hidden" name="recaptcha_response_field" value="manual_challenge">
    </noscript>

上述代码只应添加到页面正文中,并且仅在从服务器设置javascript变量时才会添加。

var shouldShow = true;

        $document.ready(function() {

            if (shouldShow) {

                // add
            } else {

                // don't add
            }
        });

如何在运行时添加这些脚本?

谢谢,

2 个答案:

答案 0 :(得分:1)

您可以使用Page.RegisterStartupScript

if (shouldShow) {

        Page.RegisterStartupScript...
}

答案 1 :(得分:1)

你可以这样做:

 var shouldShow = true;
 $document.ready(function() {
        if (shouldShow) {
           var newScript = document.createElement('script');
           newScript.type = 'text/javascript';
           newScript.src = 'https://www.google.com/recaptcha/api/challenge?k=6LfWqtgSAAAAAP1KwYFYGt0wDeJFtxznmqyRH_Q5';
           document.body.appendChild(newScript);
        } else { ... }

你可以自由地忽略noscript。因为只有在没有启用JS的情况下才显示,但在这种情况下它不会被添加。

但是,为什么不简单地将它放在某些asp:panel中,并将其可见性设置为true / false,具体取决于它是否应该显示?如果某个asp.net元素有elem.Visibility = false,则它不会发送到浏览器,与其所有内容相同。