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

Notifications

Announcements

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

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
    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
    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

Forum hierarchy changes are complete!

In our never-ending quest to improve we are simplifying the forum hierarchy…

Ajay Kumar Gannamaneni – Community Spotlight

We are honored to recognize Ajay Kumar Gannamaneni as our Community Spotlight for December…

Leaderboard > Power Apps

#1
WarrenBelz Profile Picture

WarrenBelz 721 Most Valuable Professional

#2
Michael E. Gernaey Profile Picture

Michael E. Gernaey 320 Super User 2025 Season 2

#3
Power Platform 1919 Profile Picture

Power Platform 1919 268

Last 30 days Overall leaderboard