Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

SmartInfo pop-up: access denied error

SA-6039

Summary



SmartInfo pop up is not displayed after a service intent is performed in collection framework. User is getting a javascript error saying "Access is denied" after refreshing CPM composite portal. 

The service intent has a field for which a smartInfo is configured. Now first time smart info works fine, but after refresh if user hovers/click on the field, instead of showing smart info, it gives JS error saying access denied.


Error Messages



Access Denied

smatinfopopup_XXXXXX.js!!js


Steps to Reproduce



1. Create a section with the repeating grid and place it in the default section of composite screen.
2. Inside the repeating grid, place a SmartInfo control.
3. Create a button to refresh the section/harness.

4. Execute the service intent / flow. Click on the smartinfo pop-up. For the first time it appears as expected.
5. Click on the refresh button and test the smartinfo pop-up again.


Root Cause



For CPMTabbedNavigationGadget, the iframes are built, but, if the tab is not active, then the source src of iframe is not set. Instead only the defer_src is added. Thus during runtime, Internet Explorer(IE) puts the src as about:blank when JavaScript tries to get the access the source or document and it throws error when &bRefreshData=true is appended to this empty source. IE thinks this to be of different domain than that of parent and thus it throws access denied error. 

The Access Denied error used to come from the smartinfopopup js file from the function getCoordOffset, when it tried to access the iframeList[el].contentWindow.document 


Resolution



The following code when added in the UserWorkForm rule resolves the issue:


<script> 
        var ifrDivs = parent.document.getElementsByTagName("iframe"); 
            if(ifrDivs ){ 
                         for (var q=0;q<ifrDivs.length;q++){ 
                              if(ifrDivs[q].defer_src){ 
                                 ifrDivs[q].src="blank.htm"; 
                                } 
                        }  
        } 
</script>

Follow these steps to add the code:


   1. Login to CPM.

   2. Search for UserWorkForm HTML Fragment instance.


        

   3. Save the HTML Fragment UserWorkForm into the application ruleset (if it is not already saved).

   4. Add the above mentioned code script to UserWorkForm.

   5. Save UserWorkForm and retest.
Suggest Edit

Published January 31, 2016 - Updated October 8, 2020

Did you find this content helpful? Yes No

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us