Here's the first idea that comes to mind:

Add a onYouTubeIframeAPIReady function that calls the following:

$tw.wiki.setText(title,field,index,value,options)

Use this to set the value of a tiddler like $:/vp/youtube-api-loaded to true

$tw.wiki.setText("$:/vp/youtube-api-loaded","text","","true");

In the refresh function of your widget, check if $:/vp/youtube-api-loaded 
is one of the changedTiddlers. If it is, refresh the widget.


On Tuesday, June 16, 2020 at 10:27:14 AM UTC+2, Vladimir Pouzanov wrote:
>
> I was hacking arount boot.js and I noticed that the YT api script actually 
> loads in time, it’s just that the script itself is asynchronous. From 
> https://developers.google.com/youtube/iframe_api_reference#Requirements:
>
> Any web page that uses the IFrame API must also implement the following 
> JavaScript function:
> onYouTubeIframeAPIReady – The API will call this function when the page 
> has finished downloading the JavaScript for the player API, which enables 
> you to then use the API on your page. Thus, this function might create the 
> player objects that you want to display when the page loads.
>
> So it’s not the question of how to delay the boot, I indeed need to force 
> redraw some widgets after the YT api notifies the JS it finished loading.
>
> An obvious dirty hack is to wait until onYouTubeIframeAPIReady in the very 
> end of boot.js but I’d still like to make this solution into a reasonable 
> plugin.
>
> Any further ideas on how I can force a widget redraw from the “outside” js 
> scope would be appreciated.
>
> --
>
>
> On Tuesday, Jun 16, 2020 at 6:50 a.m., Christian Byron <
> [email protected] <javascript:>> wrote:
> Hey Vladimir
>
> I think you could a couple of things, namely :
> - try renaming your tiddler so it is a system tiddler ( eg 
> $:\script\youtube.api ) ... I believe system tiddlers are loaded before 
> content tiddlers ... not sure though that loading into the wiki store is 
> enough to execute the script tag though...
> - try adding the field "*module-type" *with the value of "*startup" *and 
> see if that changes the loading sequence enough to get it working .. not 
> sure if this will work with the RawMarkup tag 
>
> If neither above works ...  a better solution may be to change your 
> tiddler to be *type *application/javascript and replace the contents with 
> the code itself.. I know marking this with module-type = startup will make 
> this code run before any content is rendered.
>
> Pulling in external libraries this way is the prefered approach as it 
> makes sure it is available while offline ( although not as applicable in 
> your use case ) .. and as the code in that link is not very big it will be 
> a simple approach
>
> Cheers
> CB  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "TiddlyWikiDev" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/tiddlywikidev/28a13fd8-0cec-4c05-a668-88fad18637f0o%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/tiddlywikidev/28a13fd8-0cec-4c05-a668-88fad18637f0o%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWikiDev" 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/tiddlywikidev/afa7d3ad-944a-43a7-8561-2c0bba89aa79o%40googlegroups.com.

Reply via email to