Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

document.query() ignores elements that appear after the script tag in html #885

Closed
DartBot opened this issue Dec 16, 2011 · 9 comments
Closed

Comments

@DartBot
Copy link

DartBot commented Dec 16, 2011

This issue was originally filed by @chrisbu


What steps will reproduce the problem?

  1. Use dart-editor to create new app using the wizard
  2. Edit the html file to move the script tag above the h2 tag
  3. Run the app.

What is the expected output? What do you see instead?

Expected "Hello world"
Actual "dart is not running"

What version of the product are you using? On what operating system?

Dart Editor, build 2231 (but it has been this way for some time)

Please provide any additional information below.

document.query("#xyz") returns null if the html element xyz appears after the script tag in the html

@DartBot
Copy link
Author

DartBot commented Dec 16, 2011

This comment was originally written by drfibonacci@google.com


Thanks, Chris. As with many JS apps, putting the script tag last "ensures" that the DOM is loaded before script execution begins. Alternatively, the dart:dom lib has a ready() function which you can call in main() to wrap your real start function.

client/base/Dom.dart
static void ready(void f())

At one point, we discussed having main() execute on DOMContentLoaded by default, so I'm leaving this open to track further discussion on it.


Added Area-UI, Triaged labels.

@DartBot
Copy link
Author

DartBot commented Dec 16, 2011

This comment was originally written by @chrisbu


Thanks.
That was the assumption I made (based upon the Embedding Dart in HTML article on the dartlang site.

"2. Dart code executes only after the page is parsed. Dart programmers can assume that the DOM is fully loaded."

I wonder if there's some kind of flag that could be passed from the script tag to indicate whether or not it should start executing the main() function straight away?

(It's probably better would be to pick one option and stick to it. My preference would be to wait until the dom is loaded, but I suspect that others will find use cases where it's desirable to start the script as before the page itself is loaded)

@DartBot
Copy link
Author

DartBot commented Dec 16, 2011

This comment was originally written by drfibonacci@google.com


All right, then, looks like the bootstrap code in dartc or the HTML lib may be broken.

http://code.google.com/p/dart/wiki/HTMLConverter handles this properly, by the way.

@DartBot
Copy link
Author

DartBot commented Dec 16, 2011

This comment was originally written by drfibonacci@google.com


Here's another workaround using dart:html that lets you move the script tag. Replace the main() method in the Hi sample with this:

void main() {
  window.on.contentLoaded.add(wrap);
}

void wrap(Event e) {
  new hi().run();
}

Note that document.on.contentLoaded.add doesn't work per issue #619.

I think the ideal default behavior would be for main() to do this automatically as the article suggests.

@DartBot
Copy link
Author

DartBot commented Dec 18, 2011

This comment was originally written by mattsh@google.com


Actually, there are times when you want to be able to run code before the DOM is fully loaded, so I think it's probably better to stick with the current behavior for main().
But, it will be good to have a library function that people can use to easily register a callback that's invoked once the DOM is loaded.

@vsmenon
Copy link
Member

vsmenon commented Apr 12, 2012

Removed Area-UI label.
Added Area-DOM label.

@vsmenon
Copy link
Member

vsmenon commented Jun 22, 2012

This should be fixed. Dart2JS automatically waits for DOMContentLoaded now. Please reopen if there is still any issues.


Added Fixed label.

@joseluis
Copy link

joseluis commented Dec 3, 2015

On version 1.13.0 this doesn't seem true anymore.

Minimal example: querySelector('#someid'); returns null when the element is placed after the script tag that loads the Dart script compiled with dart2js. In order to make it work I must use the script defer attribute, like this:

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script src="dart-program.js" defer></script>
        <script id="someid"></script>
    </body>
</html>

@alan-knight
Copy link
Contributor

Created new issue #25103

copybara-service bot pushed a commit that referenced this issue Apr 4, 2023
…ctor, browser_launcher, characters, clock, collection, convert, crypto, csslib, dartdoc, fixnum, glob, html, http, http_multi_server, http_parser, json_rpc_2, logging, matcher, mime, package_config, path, pool, pub_semver, source_maps, source_span, sse, stack_trace, stream_channel, term_glyph, test, test_descriptor, test_process, tools, usage, watcher, web_socket_channel, webdev, yaml, yaml_edit

Revisions updated by `dart tools/rev_sdk_deps.dart`.

args (https://github.com/dart-lang/args/compare/7a5e3b0..5ac2ba1):
  5ac2ba1  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#238)
  f77b1dc  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#239)

async (https://github.com/dart-lang/async/compare/f454380..0127813):
  0127813  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#236)
  100445b  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#237)

bazel_worker (https://github.com/dart-lang/bazel_worker/compare/53871c5..d5f8837):
  d5f8837  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#70)
  a8a55e6  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#71)

benchmark_harness (https://github.com/dart-lang/benchmark_harness/compare/725534a..e591ec4):
  e591ec4  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#86)
  38bf5b8  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#87)

boolean_selector (https://github.com/dart-lang/boolean_selector/compare/16e6ad3..28dc03d):
  28dc03d  2023-04-04  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#45)

browser_launcher (https://github.com/dart-lang/browser_launcher/compare/bc2dc4e..ba4e028):
  ba4e028  2023-04-04  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#41)

characters (https://github.com/dart-lang/characters/compare/3281cc7..ba8d557):
  ba8d557  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#79)
  60cae68  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#80)

clock (https://github.com/dart-lang/clock/compare/984642e..93d9f56):
  93d9f56  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#48)

collection (https://github.com/dart-lang/collection/compare/30fd0f8..9db854d):
  9db854d  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#278)

convert (https://github.com/dart-lang/convert/compare/83886e3..8812e40):
  8812e40  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#79)
  d28dc33  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#80)

crypto (https://github.com/dart-lang/crypto/compare/9efb888..8a03816):
  8a03816  2023-04-04  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#143)

csslib (https://github.com/dart-lang/csslib/compare/d32bdd4..5836863):
  5836863  2023-04-04  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#177)

dartdoc (https://github.com/dart-lang/dartdoc/compare/9be04e0..1a7952b):
  1a7952b1  2023-04-03  dependabot[bot]  Bump ossf/scorecard-action from 2.1.2 to 2.1.3 (#3382)

fixnum (https://github.com/dart-lang/fixnum/compare/f8379d9..92ec336):
  92ec336  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#108)
  f14fd19  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#109)

glob (https://github.com/dart-lang/glob/compare/f378dc8..eaa878b):
  eaa878b  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#73)
  c0c7e66  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#74)

html (https://github.com/dart-lang/html/compare/08643e9..57b747d):
  57b747d  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#209)
  51c9910  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#210)

http (https://github.com/dart-lang/http/compare/74f9d3d..ffb4438):
  ffb4438  2023-04-04  Brian Quinlan  Fix maxRedirects documentation to mention ClientException rather than RedirectException (#907)
  ad0e1cf  2023-04-03  Bahaa Fathi Yousef  Fix some spelling (#885)

http_multi_server (https://github.com/dart-lang/http_multi_server/compare/7bd190c..e0b5d35):
  e0b5d35  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#53)
  3bbaf22  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#52)

http_parser (https://github.com/dart-lang/http_parser/compare/b3b283b..bbe37dd):
  bbe37dd  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#70)
  f0527a8  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#71)

json_rpc_2 (https://github.com/dart-lang/json_rpc_2/compare/aea3bea..5da2705):
  5da2705  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#94)
  d6ab373  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#95)

logging (https://github.com/dart-lang/logging/compare/abef371..787030a):
  787030a  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#133)
  be6a20e  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#134)

matcher (https://github.com/dart-lang/matcher/compare/61f4347..cb6b68c):
  cb6b68c  2023-04-04  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#216)

mime (https://github.com/dart-lang/mime/compare/1a51be0..2d8496d):
  2d8496d  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#90)
  3b39378  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#91)

package_config (https://github.com/dart-lang/package_config/compare/74ac1cb..7e09db1):
  7e09db1  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#132)
  6dc4072  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#133)

path (https://github.com/dart-lang/path/compare/cd37179..23e3319):
  23e3319  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#140)

pool (https://github.com/dart-lang/pool/compare/338bfb4..650e5d3):
  650e5d3  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#66)

pub_semver (https://github.com/dart-lang/pub_semver/compare/c0e6ea7..860e3d8):
  860e3d8  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#82)
  12eca92  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#83)

source_maps (https://github.com/dart-lang/source_maps/compare/a112e98..0a4b030):
  0a4b030  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#76)
  e753fea  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#75)

source_span (https://github.com/dart-lang/source_span/compare/3951ba5..b739fbf):
  b739fbf  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#94)
  c6547c2  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#95)

sse (https://github.com/dart-lang/sse/compare/8c3efdc..11e83a0):
  11e83a0  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#79)

stack_trace (https://github.com/dart-lang/stack_trace/compare/6ceb191..9c1b1c5):
  9c1b1c5  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#128)
  56a09db  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#129)

stream_channel (https://github.com/dart-lang/stream_channel/compare/fe0f5e4..74646ea):
  74646ea  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#88)

term_glyph (https://github.com/dart-lang/term_glyph/compare/d275a8f..f6856e2):
  f6856e2  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#36)

test (https://github.com/dart-lang/test/compare/a01b185..8ea4298):
  8ea42987  2023-04-04  Jakub Vrána  Make tests compatible with Strict CSP (#1987)
  49f7e17a  2023-04-03  dependabot[bot]  Bump ossf/scorecard-action from 2.1.2 to 2.1.3 (#1982)
  1a4f76b2  2023-04-03  dependabot[bot]  Bump github/codeql-action from 2.2.5 to 2.2.9 (#1985)

test_descriptor (https://github.com/dart-lang/test_descriptor/compare/1d4a967..aa11162):
  aa11162  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#49)
  226fe86  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#50)

test_process (https://github.com/dart-lang/test_process/compare/f76d0b8..946bc27):
  946bc27  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#40)
  441f585  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#41)

tools (https://github.com/dart-lang/tools/compare/d40ca93..0304fbb):
  0304fbb  2023-04-04  Elias Yishak  Add catcherror callback for `sendData` (#72)
  6d1dedf  2023-04-04  Daco Harkes  [cli_config] Pub badges (#71)
  561dce2  2023-04-04  Daco Harkes  [cli_config] Bump version (#68)
  d3909a4  2023-04-04  Daco Harkes  Fix windows path resolving (#67)
  77cf078  2023-04-03  Daco Harkes  [cli_config] Fix optionalString validValues (#69)

usage (https://github.com/dart-lang/usage/compare/399770f..0698711):
  0698711  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#190)
  2cdb5e3  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#189)

watcher (https://github.com/dart-lang/watcher/compare/5968409..00aa79b):
  00aa79b  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#140)
  598038f  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#141)

web_socket_channel (https://github.com/dart-lang/web_socket_channel/compare/e2fe7f6..40eb236):
  40eb236  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#260)
  1823444  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#261)

webdev (https://github.com/dart-lang/webdev/compare/b139649..e887316):
  e887316c  2023-04-03  Elliott Brooks  Prepare DWDS for version `19.0.0` release (#2068)
  704d5086  2023-04-03  Elliott Brooks  Fix typo (#2069)
  2e6e1b63  2023-04-03  Anna Gringauze  Fix getObject failure on record class. (#2063)

yaml (https://github.com/dart-lang/yaml/compare/0f80b12..56dfaf4):
  56dfaf4  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#140)
  d925d7e  2023-04-03  dependabot[bot]  Bump actions/checkout from 3.3.0 to 3.5.0 (#141)

yaml_edit (https://github.com/dart-lang/yaml_edit/compare/fbc5cb3..386fd33):
  386fd33  2023-04-03  dependabot[bot]  Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#49)

Change-Id: I986c83f657631813a32e360fbb90f42f7d43440a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293280
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants