web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / How to load external l...
Power Apps
Unanswered

How to load external libraries and add them to dom following best practice?

(0) ShareShare
ReportReport
Posted on by Microsoft Employee

Hello everyone

 

We're using the google places api for an address autocomplete pcf control. My current issue is that when I open the form from an overview the onload function of the script is not getting called and if then only in rare cases. If I reload the form the onload function is hit everytime.

 

 

private appendGoogleApiUrlToDom(context: ComponentFramework.Context<IInputs>) {
 if (!document.getElementById('googleapi')) {
 let googleApiKey = context.parameters.googleapikey.raw;
 let scriptUrl = "https://maps.googleapis.com/maps/api/js?libraries=places&language=en&key=" + googleApiKey;

 let scriptNode = document.createElement("script");
 scriptNode.id = "googleapi";
 scriptNode.defer = true;
 scriptNode.setAttribute("type", "text/javascript");
 scriptNode.setAttribute("src", scriptUrl);
 scriptNode.onload = () => {
 debugger
 googleApiLoaded = true;
 context.factory.requestRender();
 }
 document.head.appendChild(scriptNode);
 }
 }

 

 

Is there another possibility to load external javascript libraries like the google api? With the onload function I could workaround the issue of google not being defined but later on the control depends on the googleApiLoaded variable which doesn't get set despite google being available.

Thanks!

I have the same question (0)
  • Community Power Platform Member Profile Picture
    Microsoft Employee on at

    @HemantG  Please delete. I relied on a variable from init function which doesn't get populated everytime as context parameters are still null especially not populated when opening a record from an overview. It has nothing to do with loading external libraries.


  • Diana Birkelbach Profile Picture
    3,072 Most Valuable Professional on at

    Hi @Anonymous , 

    Usually you don't inject script tags in PCF, but import the scripts and use them inside index.ts.

    Maybe using something like googleapis npm package (I didn't tried it out): https://www.npmjs.com/package/googleapis

     

    I remember about another thread regarding the google maps. Maybe it helps, since the problem seems to be similar: https://powerusers.microsoft.com/t5/Power-Apps-Pro-Dev-ISV/pcf-1022-Error-Control-source-code-declares-an-internal-module/m-p/458946


    Hope it helps!

    Kind regards,

    Diana

  • Community Power Platform Member Profile Picture
    Microsoft Employee on at

    Hi @DianaBirkelbach , thanks for your response. These are third party npm packages which do the script loading dynamically. If these packages don't exist at all how would you load hosted scripts?

  • Diana Birkelbach Profile Picture
    3,072 Most Valuable Professional on at

    Hi @Anonymous , 

    I've seen an example in the PCF docs: the Map component: https://docs.microsoft.com/en-us/powerapps/developer/component-framework/sample-controls/map-control?WT.mc_id=BA-MVP-5004107

    Basically it uses an Iframe. 
    Didn't tried this out nether...but maybe it still helps...

     

    Kind regards,

    Diana

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the May Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Apps

#1
Valantis Profile Picture

Valantis 494

#2
WarrenBelz Profile Picture

WarrenBelz 352 Most Valuable Professional

#3
11manish Profile Picture

11manish 323

Last 30 days Overall leaderboard