Rob is right. platform.js adds global wrap and unwrap functions that are
noops if the browser supports native shadow dom.


On Thu, Jul 24, 2014 at 3:36 PM, 'Rob Dodson' via Polymer <
[email protected]> wrote:

> I think on the PolymerJS side you don't need to include ShadowDOMPolyfill
> in the call. You should be able to just call wrap(document.activeElement)
>
>
> On Thu, Jul 24, 2014 at 12:12 PM, 'John Messerly' via Polymer <
> [email protected]> wrote:
>
>> Shadow DOM polyfill can't wrap accessors directly on document, so that's
>> why `document.activeElement` doesn't work. Things like `document.head` have
>> the same problem, see [1]. The usual answer is to introduce a querySelector
>> or some other method call, which kicks in the polyfill. Or you can call:
>>
>> ShadowDOMPolyfill.wrap(document.activeElement)
>>
>>
>> Calling that method from Dart would involve JS interop. I'm not an expert
>> there, but maybe something like:
>>
>> // might need a `new JsObject.fromBrowserObject()` around the method arg,
>> not sure
>>
>> context['ShadowDOMPolyfill'].callMethod('wrap', [document.activeElement]);
>>
>>
>>
>> [1]: documented here https://github.com/Polymer/ShadowDOM#wrap-and-unwrap
>>
>>
>>
>> On Thu, Jul 24, 2014 at 8:39 AM, Justin Fagnani <[email protected]
>> > wrote:
>>
>>> [email protected], John
>>>  On Jul 24, 2014 8:20 AM, "Nik Graf" <[email protected]> wrote:
>>>
>>>> I would like to identify if my component is still the active element
>>>> after a blur event.
>>>>
>>>> Here example code & a use-case to provide more Context:
>>>>
>>>> <polymer-element name="b-secret">
>>>>   <template>
>>>>     <div>Other things here</div>
>>>>     <input id="password-field" type="password" value="{{value}}">
>>>>   </template>
>>>>   <script type="application/dart" src="secret.dart"></script>
>>>> </polymer-element>
>>>>
>>>> A user clicks on a custom input element (b-secret). If you call
>>>> document.activeElement you will get the custom element (b-secret) for
>>>> Browsers supporting ShadowDOM. In Firefox (no ShadowDOM support) for
>>>> example you will get the actual input element (#password-field) inside your
>>>> component.
>>>>
>>>> While I guess fixing document.activeElement is not really possible I
>>>> would expected shadowRoot.querySelector('#password-field').hashCode to be
>>>> the same as document.activeElement.hashCode.
>>>>
>>>> I investigate a bit and recognized that the ShadowDOM shim creates a
>>>> wrapper object for the queried input field when compiled to JavaScript. The
>>>> wrapper object is aware of the field's hashCode I'm looking for, but I
>>>> can't access it through Dart. See the annotated Screenshot:
>>>> http://cl.ly/image/3F2b1l343O43
>>>>
>>>> You can find the real world example here:
>>>> https://github.com/blossom/bee/blob/secret-ff-fix/lib/components/secret/secret.dart#L100
>>>>
>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Polymer" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/polymer-dev/d7a1192a-4520-4b0d-869f-88c8f524e841%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/polymer-dev/d7a1192a-4520-4b0d-869f-88c8f524e841%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>  Follow Polymer on Google+: plus.google.com/107187849809354688692
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Polymer" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/polymer-dev/CAJup4OXw7xwUt5TjB6sodnT6JKV%2B7SKUavK%3Ds25S_goaUza0BQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/polymer-dev/CAJup4OXw7xwUt5TjB6sodnT6JKV%2B7SKUavK%3Ds25S_goaUza0BQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  Follow Polymer on Google+: plus.google.com/107187849809354688692
> ---
> You received this message because you are subscribed to the Google Groups
> "Polymer" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/polymer-dev/CAJj5OwCUOQqfJYhaPafZZbaf6pJCGHcBVguYFnKAdLdNUKCSCg%40mail.gmail.com
> <https://groups.google.com/d/msgid/polymer-dev/CAJj5OwCUOQqfJYhaPafZZbaf6pJCGHcBVguYFnKAdLdNUKCSCg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 
erik

Follow Polymer on Google+: plus.google.com/107187849809354688692
--- 
You received this message because you are subscribed to the Google Groups 
"Polymer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/polymer-dev/CAJ8%2BGoh9uqiWAovgnE%3DcUNeWsdozrnjcuWr7t6as0Y1qLOtCQg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to