-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve resize logic for native #193
Conversation
939f777
to
172e503
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
noted that postRenderAd is called before the actual resize has been called.
@@ -378,7 +378,8 @@ export function newNativeAssetManager(win, pubUrl) { | |||
callback && callback(); | |||
win.removeEventListener('message', replaceAssets); | |||
stopListening(); | |||
requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth); | |||
const resize = () => requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the resize function must contain also the postRenderAd call otherwise postRenderAd is called before the ad has been rendered:
const resize = () => {
requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth);
if (typeof window.postRenderAd === 'function') {
window.postRenderAd(bid);
}
}
@@ -378,7 +378,8 @@ export function newNativeAssetManager(win, pubUrl) { | |||
callback && callback(); | |||
win.removeEventListener('message', replaceAssets); | |||
stopListening(); | |||
requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth); | |||
const resize = () => requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth); | |||
document.readyState === 'complete' ? resize() : window.onload = resize; | |||
|
|||
if (typeof window.postRenderAd === 'function') { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and this piece should be removed from here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To me this looks correct:
at this point we are done rendering, and the resize
function is scheduled to run when the DOM is done loading ( image sources and so on). If we run postRenderAd
here it can manipulate the DOM and for example add another image that wold still come in time for resize
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In one of our templates we retrieve the height of the ad, and we do that in postRenderAd. I was thinking that the height should be calculated when we're 100% sure that the resize has happened. So, if document.readyState
is not complete
, postRenderAd is executed before resize.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi there, there are a few comments i've written down, please give a look
EDIT: Sorry I don't understand how I could add a second review request under this PR, and I can't find a way to remove it.
fixes #191 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
I've also tested it with a render function that uses postRenderAd and everything seems to work fine.
* add support for catching errors from postscribe library (prebid#129) * Prebid Universal Creative 1.12.0 Release * increment pre version * Static vast tag for mobile rendering API for rewarded video (prebid#148) * the static vast tag for mobile rendering API for rewarded video * update gulpfile to handle static vast XML file in build process Co-authored-by: Yuriy Velichko <yuriy.velichko@openx.com> Co-authored-by: Jason Snellbaker <jsnellbaker@appnexus.com> * temporarily disable unit test (prebid#149) * Prebid Universal Creative 1.13.0 Release * increment pre version * Signal AD_RENDER_FAILED / AD_RENDER_SUCCEEDED events to Prebid (prebid#152) Add a new type of cross-origin message ('Prebid Message') to signal when render-related events should be generated by Prebid. * Add issue tracking workflow: automatically create project items for new issues (prebid#161) * Upgrade dependencies make the build work on recent(ish) versions of Node (prebid#159) * Use MessageChannel for cross-frame messages (prebid#154) * Use MessageChannel for cross-frame messages * Use transformAuctionTargetingData for nativeTrackerManager * readme: removed 'coming soon' message (prebid#170) * Remove <!doctype> from markup before rendering with postscribe (prebid#172) * Bump got from 11.8.3 to 11.8.5 (prebid#169) Bumps [got](https://github.com/sindresorhus/got) from 11.8.3 to 11.8.5. - [Release notes](https://github.com/sindresorhus/got/releases) - [Commits](sindresorhus/got@v11.8.3...v11.8.5) --- updated-dependencies: - dependency-name: got dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump copy-props from 2.0.4 to 2.0.5 (prebid#163) Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5. - [Release notes](https://github.com/gulpjs/copy-props/releases) - [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md) - [Commits](gulpjs/copy-props@2.0.4...2.0.5) --- updated-dependencies: - dependency-name: copy-props dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump tar from 4.4.8 to 4.4.19 (prebid#162) Bumps [tar](https://github.com/npm/node-tar) from 4.4.8 to 4.4.19. - [Release notes](https://github.com/npm/node-tar/releases) - [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md) - [Commits](isaacs/node-tar@v4.4.8...v4.4.19) --- updated-dependencies: - dependency-name: tar dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Replace missing native assets with empty strings (prebid#171) * Replace missing native assets with empty strings * Update: Replace missing native assets with empty strings * Fix: Replace missing native assets with empty strings Co-authored-by: anita.schiller <anita.schiller@gutefrage.net> * Fix bugs / tests with empty string default for missing assets (prebid#178) * Fix bugs / tests with empty string default for missing assets * Run tests on PRs * Update test browsers to be in line with Prebid.js * Update circleCI image to be in line with the one used for releases * Bump yargs-parser from 5.0.0 to 5.0.1 (prebid#164) Bumps [yargs-parser](https://github.com/yargs/yargs-parser) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/yargs/yargs-parser/releases) - [Changelog](https://github.com/yargs/yargs-parser/blob/v5.0.1/CHANGELOG.md) - [Commits](yargs/yargs-parser@v5.0.0...v5.0.1) --- updated-dependencies: - dependency-name: yargs-parser dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Native ortb (prebid#150) * if there is an ortb2 field pass it to renderAd function * replace ortb2 with ortb * handle impression and clicktrackers within puc * fix tests * add tests for native ortb trackers * add openRTB feature for adTemplate * add unit test for native ortb * fix unit test post rebase * convert legacy templates to ortb templates * set the width of the iframe to the parent div width * native renderer receives both legacy and ortb assets * only resize the native ad when the size is 1x1 * send message to trigger trackers on pbjs * default: return empty string if no asset is found * add suport for eventtrackers as of native ortb 1.2 * fix broken test introduced with prebid#171 * fix broken test introduced with prebid#171 * remove accidentally added files * fixes after rebasing Co-authored-by: Michele Nasti <michele@rtk.io> Co-authored-by: Michele Nasti <musikele@users.noreply.github.com> * Bump engine.io and karma (prebid#173) Bumps [engine.io](https://github.com/socketio/engine.io) and [karma](https://github.com/karma-runner/karma). These dependencies needed to be updated together. Updates `engine.io` from 3.2.1 to 6.2.0 - [Release notes](https://github.com/socketio/engine.io/releases) - [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md) - [Commits](socketio/engine.io@3.2.1...6.2.0) Updates `karma` from 4.3.0 to 6.4.0 - [Release notes](https://github.com/karma-runner/karma/releases) - [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md) - [Commits](karma-runner/karma@v4.3.0...v6.4.0) --- updated-dependencies: - dependency-name: engine.io dependency-type: indirect - dependency-name: karma dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Prebid Universal Creative 1.14.0 release * Increment version to 1.15.0-pre * Bump ejs and webdriverio (prebid#184) Bumps [ejs](https://github.com/mde/ejs) to 3.1.8 and updates ancestor dependency [webdriverio](https://github.com/webdriverio/webdriverio). These dependencies need to be updated together. Updates `ejs` from 3.1.6 to 3.1.8 - [Release notes](https://github.com/mde/ejs/releases) - [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md) - [Commits](mde/ejs@v3.1.6...v3.1.8) Updates `webdriverio` from 4.14.4 to 7.25.2 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](webdriverio/webdriverio@v4.14.4...v7.25.2) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect - dependency-name: webdriverio dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Separate puc (prebid#165) * separate puc into multiple output files based on format * shake plugin * move stuff around for easier treeshaking * add building legacy 'creative.js' for backwards compatibility fix docs and style * Static vast tag for mobile rendering API for rewarded video (prebid#148) * temporarily disable unit test (prebid#149) * Signal AD_RENDER_FAILED / AD_RENDER_SUCCEEDED events to Prebid (prebid#152) * Add issue tracking workflow: automatically create project items for new issues * add .npmignore to not break jsdelivr * avoid code duplicates in gulpfile * fix renderCrossDomain after rebase * fixes post rebase * in order to support tree-shaking, environment is not an object anymore * remove deprecation warning from uid.js * update creative in the readme.md * add test for legacyNativeRender to accept only one argument * added package-lock so npm ci doesn't fail * fix to first argument of call method * fix for iframe width not being resized correctly when creative is safeframe * add generation of legacy files on watch * new package lock with newer dependencies Co-authored-by: Filip Stamenkovic <ficadub@gmail.com> Co-authored-by: Michele Nasti <michele@rtk.io> * add buil-dev task (prebid#189) Co-authored-by: Michele Nasti <michele@rtk.io> * make the project work with node latest; upgrade wdio (prebid#188) * make the project work with node latest; upgrade wdio * remove engine property Co-authored-by: Michele Nasti <michele@rtk.io> * Bump qs and body-parser (prebid#197) Bumps [qs](https://github.com/ljharb/qs) and [body-parser](https://github.com/expressjs/body-parser). These dependencies needed to be updated together. Updates `qs` from 6.9.0 to 6.11.0 - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](ljharb/qs@v6.9.0...v6.11.0) Updates `body-parser` from 1.19.0 to 1.20.1 - [Release notes](https://github.com/expressjs/body-parser/releases) - [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md) - [Commits](expressjs/body-parser@1.19.0...1.20.1) --- updated-dependencies: - dependency-name: qs dependency-type: indirect - dependency-name: body-parser dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump decode-uri-component from 0.2.0 to 0.2.2 (prebid#195) Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](SamVerschueren/decode-uri-component@v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump engine.io from 6.2.0 to 6.2.1 (prebid#192) Bumps [engine.io](https://github.com/socketio/engine.io) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/socketio/engine.io/releases) - [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md) - [Commits](socketio/engine.io@6.2.0...6.2.1) --- updated-dependencies: - dependency-name: engine.io dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * hb_native_privicon (prebid#194) Co-authored-by: skoklowski <slawomir.koklowski@ringieraxelspringer.pl> * Prebid Universal Creative 1.15.0 release * Increment version to 1.16.0-pre * Add macro to track clicks (prebid#196) * added support for GAM macro %%CLICK_URL_UNESC%% * add tests for %%CLICK_URL_UNESC%% * add info about clickUrlUnesc in readme Co-authored-by: Michele Nasti <michele@rtk.io> * Update issue_tracker.yml for new GH API (prebid#203) * Replace all placeholders with the corresponding ortb assets (prebid#211) * Replace all placeholders with the corresponding ortb assets * Add test for replacing all placeholders * Use gulp in test script --------- Co-authored-by: anita.schiller <anita.schiller@gutefrage.net> * Remove DOCTYPE from markup for app/amp/mobile (prebid#210) * Bump http-cache-semantics from 4.1.0 to 4.1.1 (prebid#205) Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/kornelski/http-cache-semantics/releases) - [Commits](kornelski/http-cache-semantics@v4.1.0...v4.1.1) --- updated-dependencies: - dependency-name: http-cache-semantics dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump ua-parser-js from 0.7.32 to 0.7.33 (prebid#202) Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.32 to 0.7.33. - [Release notes](https://github.com/faisalman/ua-parser-js/releases) - [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md) - [Commits](faisalman/ua-parser-js@0.7.32...0.7.33) --- updated-dependencies: - dependency-name: ua-parser-js dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump minimist, mkdirp, handlebars, karma-mocha and mocha (prebid#207) Bumps [minimist](https://github.com/minimistjs/minimist) to 1.2.8 and updates ancestor dependencies [minimist](https://github.com/minimistjs/minimist), [mkdirp](https://github.com/isaacs/node-mkdirp), [handlebars](https://github.com/wycats/handlebars.js), [karma-mocha](https://github.com/karma-runner/karma-mocha) and [mocha](https://github.com/mochajs/mocha). These dependencies need to be updated together. Updates `minimist` from 1.2.0 to 1.2.8 - [Release notes](https://github.com/minimistjs/minimist/releases) - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](minimistjs/minimist@v1.2.0...v1.2.8) Updates `mkdirp` from 0.5.1 to 0.5.6 - [Release notes](https://github.com/isaacs/node-mkdirp/releases) - [Changelog](https://github.com/isaacs/node-mkdirp/blob/main/CHANGELOG.md) - [Commits](isaacs/node-mkdirp@0.5.1...v0.5.6) Updates `handlebars` from 4.4.3 to 4.7.7 - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](handlebars-lang/handlebars.js@v4.4.3...v4.7.7) Updates `karma-mocha` from 1.3.0 to 2.0.1 - [Release notes](https://github.com/karma-runner/karma-mocha/releases) - [Changelog](https://github.com/karma-runner/karma-mocha/blob/master/CHANGELOG.md) - [Commits](karma-runner/karma-mocha@v1.3.0...v2.0.1) Updates `mocha` from 5.2.0 to 10.2.0 - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md) - [Commits](mochajs/mocha@v5.2.0...v10.2.0) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect - dependency-name: mkdirp dependency-type: indirect - dependency-name: handlebars dependency-type: indirect - dependency-name: karma-mocha dependency-type: direct:development - dependency-name: mocha dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump socket.io-parser from 4.2.1 to 4.2.4 (prebid#214) Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.1 to 4.2.4. - [Release notes](https://github.com/socketio/socket.io-parser/releases) - [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md) - [Commits](socketio/socket.io-parser@4.2.1...4.2.4) --- updated-dependencies: - dependency-name: socket.io-parser dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improve resize logic for native (prebid#193) * Log error when renderAd lookup failed (prebid#217) * Emit AD_RENDER_SUCCEEDED and AD_RENDER_FAILED for native ads (prebid#199) * Emit AD_RENDER_SUCCEEDED and AD_RENDER_FAILED for native ads * Merge master * Bump fsevents from 1.2.9 to 1.2.13 (prebid#220) Bumps [fsevents](https://github.com/fsevents/fsevents) from 1.2.9 to 1.2.13. - [Release notes](https://github.com/fsevents/fsevents/releases) - [Commits](fsevents/fsevents@v1.2.9...v1.2.13) --- updated-dependencies: - dependency-name: fsevents dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Prebid Universal Creative 1.16.0 release * re-applied freestar logic to new codebase --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Jiří Leták <jiri.letak@ibillboard.com> Co-authored-by: Jason Snellbaker <jsnellbaker@appnexus.com> Co-authored-by: Yuriy Velichko <yuriy.velichko@postindustria.com> Co-authored-by: Yuriy Velichko <yuriy.velichko@openx.com> Co-authored-by: jsnellbaker <31102355+jsnellbaker@users.noreply.github.com> Co-authored-by: Demetrio Girardi <demetrio.girardi@gmail.com> Co-authored-by: Demetrio Girardi <dgirardi@prebid.org> Co-authored-by: bretg <bgorsline@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: anitaschiller <77627311+anitaschiller@users.noreply.github.com> Co-authored-by: anita.schiller <anita.schiller@gutefrage.net> Co-authored-by: Filip Stamenkovic <ficadub@gmail.com> Co-authored-by: Michele Nasti <michele@rtk.io> Co-authored-by: Michele Nasti <musikele@users.noreply.github.com> Co-authored-by: Prebid.js automated release <prebidjs-release@prebid.org> Co-authored-by: Sławomir Kokłowski <38455696+skoklowski@users.noreply.github.com> Co-authored-by: skoklowski <slawomir.koklowski@ringieraxelspringer.pl> Co-authored-by: Sir-Will <brieftaubenman@gmail.com>
This is a partial fix for #191 (does not address the case where GPT is set to
allowPushExpansion
, which needs a change on the Prebid side).The iframe resize request is now done when the window has completed loading instead of when the rendering logic completes - which gives time for images, scripts, etc to be done.
Tested on Chrome and FF using the same test page from #190.