Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.
This repository was archived by the owner on May 15, 2025. It is now read-only.

Inline <script type="text/markdown"> not picked up in ready() #55

@brettpostin

Description

@brettpostin

Description

TL;DR

var markdownElement = Polymer.dom(this).querySelector('[type^="text/markdown"]');

In Chrome, this line in the ready() callback returns null unexpectedly.

Long Version

Ok I've tried to reproduce this in isolation but I'm having difficulty so I will have to try and explain as best I can.

Environment:

  • Heavily developed instance of the Polymer Starter Kit for an internal element gallery.
  • Polymer 1.8.1 using webcomponents-lite.js and shady dom.

Markup:

<paper-material>
    <p>A horizontal layout:</p>
    <my-layout orientation="horizontal">
        <my-pane></my-pane>
        <my-pane></my-pane>
        <my-pane></my-pane>
    </my-layout>
    <marked-element id="1">
        <script type="text/markdown">
            ```
            TEST 1
            ```
        </script>
    </marked-element>
    <marked-element id="2">
        <script type="text/markdown">
            ```
            TEST 2
            ```
        </script>
    </marked-element>
</paper-material>
<paper-material>
    <p>A horizontal layout:</p>
    <my-layout orientation="horizontal">
        <my-pane></my-pane>
        <my-pane></my-pane>
        <my-pane></my-pane>
    </my-layout>    
    <marked-element id="3">
        <script type="text/markdown">
            ```
            TEST 3
            ```
        </script>
    </marked-element>
    <marked-element id="4">
        <script type="text/markdown">
            ```
            TEST 4
            ```
        </script>
    </marked-element>
</paper-material>

Given four marked-elements with the exact same markup (copied-pasted) , the 3rd marked-element does not render at all. I have put the following tracing in:

image

In the ready() method the following line unexpectedly returns null:

var markdownElement = Polymer.dom(this).querySelector('[type^="text/markdown"]');

Observations:

  • It only happens in Chrome. IE, Edge and Firefox all exhibit the expected behaviour.
  • It appears to be a timing issue. Attaching the debugger seems to give Chrome a chance to catch up and it works as expected.
  • It seems to be sensitive to the surrounding markup, removing different portions of surrounding markup changes which marked-element (1,2,3,4) does not get rendered.

Expected outcome

All marked-elements get rendered.

Actual outcome

A pseudo-random marked-element does not get rendered, seemingly dependent on the rest of the document.

Browsers Affected

  • [ x ] Chrome
  • Firefox
  • Safari 9
  • Safari 8
  • Safari 7
  • Edge
  • IE 11
  • IE 10

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions