Bug Tracker

Opened 8 years ago

Closed 5 years ago

#11484 closed feature (migrated)

SourceURL support for scripts loaded by domManip using XHRs.

Reported by: vsevik@… Owned by: jaubourg
Priority: low Milestone: 1.12/2.2
Component: ajax Version: 1.7.1
Keywords: Cc:
Blocked by: Blocking:

Description

This ticket is inspired by discussion in Chrome Developer Tools mailing group: https://groups.google.com/group/google-chrome-developer-tools/browse_thread/thread/e22f4cb5b0685dbd

SourceURL is a way to give a name to the script executed by eval() for debugging purposes. See http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/

Adding sourceURL to scripts loaded by domManip would make debugging easier. example: $('head').append('<script src="test.js'></script>');

Similar (but different) request http://bugs.jquery.com/ticket/8292 was closed as wontfix earlier, so some comments on the reasons mentioned there:

This is a functionality that:

  • only developers will need while debugging

Yes, but is very valuable for developers and it comes with virtually zero cost for users.

  • is only useful for Chrome users

sourceURL is supported by Firefox and WebKit (Chrome, Safari) which makes together more than 60% of browser market share.

  • is of limited use as the names would need to be randomly generated

In the example mentioned above the url could and should be taken from the src attribute of the script tag. This is the same url the script was loaded from.

Vsevolod Vlasov, webkit reviewer

Change History (12)

comment:1 Changed 7 years ago by Rick Waldron

Component: unfiledajax
Priority: undecidedlow

comment:2 Changed 7 years ago by dmethvin

Milestone: None1.next
Status: newopen

Worth investigating.

comment:3 Changed 7 years ago by jaubourg

Owner: set to jaubourg
Status: openassigned

I'll look into it

comment:4 Changed 7 years ago by dmethvin

Type: enhancementfeature

Bulk change from enhancement to feature.

comment:6 Changed 7 years ago by dmethvin

Just a note after a quick look at that pull request. It's possible we might open up security holes by adding this if we're not careful with the sourceURL string and it has a newline. We also need to be alert for the IE conditional javascript bug, see #13274.

comment:7 Changed 6 years ago by m_gol

As for the IE conditional compilation bug, fortunately that's behind us - the recent sourcemap specification changes also changed the //@ sourceURL= to //# sourceURL=.

comment:8 Changed 6 years ago by m_gol

Milestone: 1.next1.next/2.next

comment:9 Changed 6 years ago by dmethvin

If we switch to always using <script> tags for running code, we get this for free. I don't think the remaining use cases warrant a change to globalEval. See https://github.com/jquery/jquery/pull/1449 for tradeoffs.

comment:10 Changed 5 years ago by paul.irish

This one just came up again: https://code.google.com/p/chromium/issues/detail?id=365645

I believe that with wither globalEval or a script tag the script will not have a real name that's debuggable in browser devtools. @sourceURL has strong x-browser support and would allow you to inject a filename for all injected scripts which would allow them to participate like real files.

comment:11 Changed 5 years ago by dmethvin

Milestone: 1.next/2.next1.12/2.2

See #14757, but since it's a feature I'll leave it open separately. I don't think we'd retain the globalEval method just so we could inject a #sourceURL comment, but if the user has added one the script tag method should use it.

comment:12 Changed 5 years ago by m_gol

Resolution: migrated
Status: assignedclosed
Note: See TracTickets for help on using tickets.