Question

I am creating a debugger utility to help me out in debugging without the to follow cumbersome process of redeploying and going to all the way to the page to test it. so I have created the below functions which are called by various buttons.

     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());
}

Now all I wanted to do is to allow me to update the value of the function below and use it without the need for redeployment.

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

}</script>

Now the problem is that Firefox is able to update the code (IE throws error) and retrieve it. But when I try to click and execute the script it still show result of the old function.

Any Ideas what I might be doing wrong???

Was it helpful?

Solution

This is happening because you're using the same script tag and changing the inner text. You have to add a new script tag.

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

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

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

Also, you cannot use append() to add text to an element like you're doing on your updateTestCode() function. You have to use the text().

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

Here an working example: http://jsfiddle.net/MtY3h/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top