0

我正在创建一个调试器实用程序来帮助我进行调试,而无需遵循繁琐的重新部署过程并一直到页面进行测试。所以我创建了以下由各种按钮调用的函数。

     function updateTestCode()
    {
        $("script[for='testing']").html('');
        alert('Adding function ' + $('#_testArea').val());
        $("script[for='testing']").append($('#_testArea').val());



    }

function checkCode()
{
    alert('Calling Function ');
    try{
        validateFields();
    }catch(err)
    {
        form.showDebugMsg("Error When Running Script " + err);
    }
}

function generateScriptCode()
{
    $('#_testArea').val($("script[for='testing']").html());
}

现在我想做的就是允许我更新下面函数的值并使用它而无需重新部署。

<script type="text/javascript" for='testing'>
function validateFields()
{
    alert('Hello World');

}</script>

现在的问题是 Firefox 能够更新代码(IE 抛出错误)并检索它。但是当我尝试单击并执行脚本时,它仍然显示旧函数的结果。

任何想法我可能做错了什么???

4

1 回答 1

0

发生这种情况是因为您使用了相同的脚本标签并更改了内部文本。您必须添加一个新的脚本标签。

scriptContent = "... function ...";

// delete old tag
$("#testScript").remove();

// add a new one
$("<script id='testScript'/>").text(scriptContent).appendTo("head");

此外,您不能像在函数上那样使用append()向元素添加文本。updateTestCode()你必须使用text().

// use text(), not append()
$("script[for='testing']").text($('#_testArea').val());

这是一个工作示例:http: //jsfiddle.net/MtY3h/

于 2012-08-04T11:30:49.887 回答