Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Request.processScripts always evals .js files. #2220

Closed
ibolmo opened this Issue · 2 comments

2 participants

@ibolmo
Owner

(from Lighthouse)

processScripts: function(text){
    if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
    return text.stripScripts(this.options.evalScripts);
}

After a little trip to the Request class I realized that all js files are being exec. Is there any reason why you are imposing this? We have the option of exec something that is NOT js but we DONT have the options of NOT exec something that is js??? Is it possible you guys can rework the class or give us an extra option for this?


(from comment)

Im working on a "desktop app" that runs in the browser... it is fetch from a server (not necessarily from the internet, in most cases the server is in an embedded device) and we want to prefetch scripts at a certain time but not execute them up front. Scripts must be managed later when they are needed due to the nature of the project (but they must have been loaded and stored already). The scripts will be eval but we are the ones that will decide when.

Anyhow I think the code should give the user the flexibility to choose whether the scripts get executed or not.

@ibolmo
Owner

See also: https://mootools.lighthouseapp.com/projects/2706/tickets/1226-response-cant-leave-script-tags-in-place

Hello,

I tried to use Request for some ajax content insertion (Request.HTML did no better). When the answer contained a javascript captcha it was removed when I inserted the html (via innerHTML = ...).

I had the choice between evalRequest and evalScripts to change this behaviour. evalRequest did what I want in Firefox and Safari:

It left the script tags in place so that I could do some magic to get them working again (innerHtml assignments don't really work with scripts).

However - this evaluated the whole response which failed in Chrome because the response did contain html and not javascript. What I really wanted was something like evalScripts=false which leaves the script tags in place.

Request.implement({
    processScripts: function(text){
        return text;
    }
});

Did the trick for me but I think there should be another flag or something.

Bye,

  • CH
@fakedarren
Collaborator

We can't change this in case this is expected behaviour.

If there's a pull request to go with it then we can re-open this.

@fakedarren fakedarren closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.