2

Is it possible to make a page viewer webpart automatically refresh or upgrade?

I have a report image which I am replacing every 15 minutes with a script but the Page Viewer on SharePoint isn't updating to reflect.

  • Can't you just refresh the page where the viewer is placed with some JavaScript? – Robert Lindgren Aug 1 '13 at 5:37
1

You could simply apply your settings and add this snippet to your page:

(function () {
      //this snippet reloads an iframe on the page in a set interval
      function getIFrameBySrc(src){
        var matchingElements = [];
        //shim for querySelector heavily stolen from http://stackoverflow.com/questions/9496427/can-i-get-elements-by-attribute-selector-when-queryselectorall-is-not-available
        if(typeof document.querySelector == "undefined") {
            var allElements = document.getElementsByTagName('*');
            for (var i = 0, n = allElements.length; i < n; i++)
            {
              console.log(allElements[i]);
              if (allElements[i].getAttribute('src') === src)
              {
                // Element exists with attribute. Add to array.
                matchingElements.push(allElements[i]);
              }
            }
        } else{
          matchingElements = document.querySelectorAll('iframe[src-' + src + ']');
        }
        return matchingElements;
      }

      var iframes = getIFrameBySrc('http://www.w3schools.com'); //add the target url here

      function reloadIframe(){
        for(var i = 0; i < iframes.length; i++){
          //better but only works on same origin pages
          /*iframes[i].contentWindow.location.reload(true);*/

          //does not work in certain versions of chrome
          iframes[i].src = iframes[i].src;

          //more info here 
          // http://stackoverflow.com/questions/2064850/how-to-refresh-an-iframe-using-javascript
        }
      }
      //if used on mds pages you need to check before setting this up multiple times
      setInterval(reloadIframe, 5000);//time in ms it takes to refresh 
}());

Remember to check if you already attached a interval for MDS pages.

Live example

| improve this answer | |
0

Rather than use the Page Viewer Web Part you could use the HTML Form Web Part and put the required javascript and iframe in to make this happen.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.