0% found this document useful (0 votes)
38 views

mraid_js

The document contains JavaScript code related to MRAID (Mobile Rich Media Ad Interface Definitions) functionality for mobile applications. It includes methods for managing ad states, handling events, and interacting with the native SDK on iOS and Android devices. The code also defines various properties and methods for ad placement, resizing, and event handling.

Uploaded by

jhfuyhgoiuhil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views

mraid_js

The document contains JavaScript code related to MRAID (Mobile Rich Media Ad Interface Definitions) functionality for mobile applications. It includes methods for managing ad states, handling events, and interacting with the native SDK on iOS and Android devices. The code also defines various properties and methods for ad placement, resizing, and event handling.

Uploaded by

jhfuyhgoiuhil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

23:55

27/03/2024/iphone|mac|ipad|ipod/i.test(window.navigator.userAgent.toLowerCase())&&(
console={},console.log=function(e){var
t=document.createElement("iframe");t.setAttribute("src","ios-log:
"+e),document.documentElement.appendChild(t),t.parentNode.removeChild(t),t=null},co
nsole.debug=console.info=console.warn=console.error=console.log),function(){var
e=window.mraid={},t=window.navigator.userAgent.toLowerCase(),n=/iphone|mac|ipad|
ipod/i.test(t),r=/android/i.test(t),i=window.mraidbridge={nativeSDKFiredReady:!
1,nativeCallQueue:[],nativeCallInFlight:!1,lastSizeChangeProperties:null};function
o(e){var t,i;N(s.INFO,"调用方法:"+e),n?(t=e,
(i=document.createElement("iframe")).setAttribute("frameborder","0"),i.style.cssTex
t="width:0;height:0;border:0;display:none;",i.setAttribute("src",t),setTimeout(func
tion()
{document.body.appendChild(i)},5)):r&&window.prompt(e,"mraid:")}i.fireChangeEvent=f
unction(e){for(var t in e){if(e.hasOwnProperty(t))(0,A[t])
(e[t])}},i.nativeCallComplete=function(e){0!==this.nativeCallQueue.length?
o(this.nativeCallQueue.pop()):this.nativeCallInFlight=!
1},i.executeNativeCall=function(e){var t=e.shift();if(!
this.nativeSDKFiredReady)return console.log("rejecting "+t+" because mraid is not
ready"),void i.notifyErrorEvent("mraid is not ready",t);for(var
n,r,a="mraid://"+t,s=!0,u=0;u<e.length;u+=2)n=e[u],null!==(r=e[u+1])&&(s?
(a+="?",s=!1):a+="&",a+=encodeURIComponent(n)
+"="+encodeURIComponent(r));this.nativeCallInFlight?this.nativeCallQueue.push(a):
(this.nativeCallInFlight=!0,o(a))},i.setCurrentPosition=function(e,t,n,r)
{d={x:e,y:t,width:n,height:r},N(s.INFO,"Set current position to
"+I(d))},i.setDefaultPosition=function(e,t,n,r)
{g={x:e,y:t,width:n,height:r},N(s.INFO,"Set default position to
"+I(g))},i.setMaxSize=function(e,t)
{p={width:e,height:t},h.width=e,h.height=t,N(s.INFO,"Set max size to
"+I(p))},i.setPlacementType=function(e){O=e,N(s.INFO,"Set placement type to
"+I(O))},i.setScreenSize=function(e,t){m={width:e,height:t},N(s.INFO,"Set screen
size to "+I(m))},i.setState=function(e){R=e,N(s.INFO,"Set state to
"+I(R)),N(s.STATECHANGE,R)},i.setIsViewable=function(e){y=e,N(s.INFO,"Set
isViewable to "+I(y)),N(s.VIEWABLECHANGE,y)},i.setSupports=function(e,t,n,r,i)
{f={sms:e,tel:t,calendar:n,storePicture:r,inlineVideo:i}},i.notifyReadyEvent=functi
on(){this.nativeSDKFiredReady=!0,N(s.READY)},i.notifyErrorEvent=function(e,t)
{N(s.ERROR,e,t)},i.fireReadyEvent=i.notifyReadyEvent,i.fireErrorEvent=i.notifyError
Event,i.notifySizeChangeEvent=function(e,t)
{this.lastSizeChangeProperties&&e==this.lastSizeChangeProperties.width&&t==this.las
tSizeChangeProperties.height||
(this.lastSizeChangeProperties={width:e,height:t},N(s.SIZECHANGE,e,t))},i.notifySta
teChangeEvent=function(){R===a.LOADING&&N(s.INFO,"Native SDK
initialized."),N(s.INFO,"Set state to
"+I(R)),N(s.STATECHANGE,R)},i.notifyViewableChangeEvent=function(){N(s.INFO,"Set
isViewable to "+I(y)),N(s.VIEWABLECHANGE,y)},i.audioVolumeChange=function(e)
{w=e,N(s.INFO,"Set audioVolumeChange to
"+I(e)),N(s.AUDIOVOLUMECHANGE,w)};e.VERSION="3.0";var
a=e.STATES={LOADING:"loading",DEFAULT:"default",EXPANDED:"expanded",HIDDEN:"hidden"
,RESIZED:"resized"},s=e.EVENTS={ERROR:"error",INFO:"info",READY:"ready",STATECHANGE
:"stateChange",VIEWABLECHANGE:"viewableChange",SIZECHANGE:"sizeChange",AUDIOVOLUMEC
HANGE:"audioVolumeChange"},u=e.PLACEMENT_TYPES={UNKNOWN:"unknown",INLINE:"inline",I
NTERSTITIAL:"interstitial"},h={width:!1,height:!1,useCustomClose:!1,isModal:!
0},l={width:!1,height:!1,offsetX:!1,offsetY:!1,customClosePosition:"top-
right",allowOffscreen:!0},c={allowOrientationChange:!
0,forceOrientation:"none"},f={sms:!1,tel:!1,calendar:!1,storePicture:!
1,inlineVideo:!1},p={},d={},g={},m={},v={},E={},w="",R=a.LOADING,y=!
1,O=u.UNKNOWN,C={major:0,minor:0,patch:0},N=function(){for(var e=new
Array(arguments.length),t=arguments.length,n=0;n<t;n++)e[n]=arguments[n];var
r=e.shift();v[r]&&v[r].broadcast(e)},S=function(e,t){for(var n in
t)if(t[n]===e)return!0;return!1},I=function(e){if("object"==typeof e){var
t=[];if(e.push){for(var n in e)t.push(e[n]);return"["+t.join(",")+"]"}for(var n in
e)t.push("'"+n+"': "+e[n]);return"{"+t.join(",")+"}"}return
String(e)},A={state:function(e){R===a.LOADING&&N(s.INFO,"Native SDK
initialized."),R=e,N(s.INFO,"Set state to
"+I(e)),N(s.STATECHANGE,R)},viewable:function(e){y=e,N(s.INFO,"Set isViewable to
"+I(e)),N(s.VIEWABLECHANGE,y)},placementType:function(e){N(s.INFO,"Set
placementType to "+I(e)),O=e},sizeChange:function(e){for(var t in N(s.INFO,"Set
screenSize to
"+I(e)),e)e.hasOwnProperty(t)&&(m[t]=e[t])},currentAppOrientation:function(e,t)
{E={orientation:e,locked:t},N(s.INFO,"Set app orientation to
"+I(E))},supports:function(e){N(s.INFO,"Set supports to
"+I(e)),f=e},hostSDKVersion:function(e){var t=e.split(".").map(function(e){return
parseInt(e,10)}).filter(function(e){return
e>=0});t.length>=3&&(C.major=parseInt(t[0],10),C.minor=parseInt(t[1],10),C.patch=pa
rseInt(t[2],10),N(s.INFO,"Set hostSDKVersion to "+I(C)))}},P=function(e,t,n,r){if(!
r){if(null===e)return N(s.ERROR,"Required object not provided.",n),!1;for(var i in
t)if(t.hasOwnProperty(i)&&void 0===e[i])return N(s.ERROR,"Object is missing
required property: "+i,n),!1}for(var o in e){var a=t[o],u=e[o];if(a&&!a(u))return
N(s.ERROR,"Value of property "+o+" is invalid: "+u,n),!1}return!
0},b={useCustomClose:function(e){return"boolean"==typeof
e}};e.addEventListener=function(t,n){t&&n?S(t,s)?(v[t]||(v[t]=new function(t)
{this.event=t,this.count=0;var n={};this.add=function(e){var t=String(e);n[t]||
(n[t]=e,this.count++)},this.remove=function(e){var t=String(e);return!!
n[t]&&(n[t]=null,delete n[t],this.count--,!0)},this.removeAll=function(){for(var e
in n)n.hasOwnProperty(e)&&this.remove(n[e])},this.broadcast=function(t){for(var r
in n)n.hasOwnProperty(r)&&n[r].apply(e,t)},this.toString=function(){var
e=[t,":"];for(var r in n)n.hasOwnProperty(r)&&e.push("|",r,"|");return e.join("")}}
(t)),v[t].add(n)):N(s.ERROR,"Unknown MRAID event:
"+t,"addEventListener"):N(s.ERROR,"Both event and listener are
required.","addEventListener")},e.close=function(){R===a.HIDDEN?N(s.ERROR,"Ad
cannot be closed when it is already
hidden.","close"):i.executeNativeCall(["close"])},e.unload=function()
{R===a.EXPANDED?N(s.ERROR,"Ad cannot be unload when it is already
EXPANDED.","close"):i.executeNativeCall(["unload"])},e.expand=function(e)
{if(this.getState()!==a.DEFAULT&&this.getState()!==a.RESIZED)N(s.ERROR,"Ad can only
be expanded from the default or resized state.","expand");else{var
t=["expand","shouldUseCustomClose",!
1];e&&(t=t.concat(["url",e])),i.executeNativeCall(t)}},e.getExpandProperties=functi
on()
{return{width:h.width,height:h.height,useCustomClose:h.useCustomClose,isModal:h.isM
odal}},e.getCurrentPosition=function()
{return{x:d.x,y:d.y,width:d.width,height:d.height}},e.getDefaultPosition=function()
{return{x:g.x,y:g.y,width:g.width,height:g.height}},e.getMaxSize=function()
{return{width:p.width||window.innerWidth,height:p.height||
window.innerHeight}},e.getPlacementType=function(){return
O},e.getScreenSize=function(){return{width:m.width||
window.screen.width,height:m.height||window.screen.height}},e.getState=function()
{return R},e.isViewable=function(){return y},e.getVersion=function(){return
e.VERSION},e.getCurrentAppOrientation=function()
{return{orientation:E.orientation,locked:E.locked}},e.getAudioVolume=function()
{return w},e.open=function(e){e?
i.executeNativeCall(["open","url",e]):N(s.ERROR,"URL is
required.","open")},e.removeEventListener=function(e,t){if(e){if(t){var n=!
1;if(v[e]&&(n=v[e].remove(t)),!n)return void N(s.ERROR,"Listener not currently
registered for event.","removeEventListener")}else!
t&&v[e]&&v[e].removeAll();v[e]&&0===v[e].count&&(v[e]=null,delete v[e])}else
N(s.ERROR,"Event is
required.","removeEventListener")},e.setExpandProperties=function(e)
{P(e,b,"setExpandProperties",!
0)&&e.hasOwnProperty("useCustomClose")&&(h.useCustomClose=!
1)},e.useCustomClose=function(e){},e.createCalendarEvent=function(e)
{D.initialize(e),D.parse()?
i.executeNativeCall(D.arguments):N(s.ERROR,D.errors[0],"createCalendarEvent")},e.su
pports=function(e){return f[e]},e.playVideo=function(t){e.isViewable()?t?
i.executeNativeCall(["playVideo","uri",t]):N(s.ERROR,"playVideo must be called with
a valid URI","playVideo"):N(s.ERROR,"playVideo cannot be called until the ad is
viewable","playVideo")},e.storePicture=function(t){e.isViewable()?t?
i.executeNativeCall(["storePicture","uri",t]):N(s.ERROR,"storePicture must be
called with a valid URI","storePicture"):N(s.ERROR,"storePicture cannot be called
until the ad is viewable","storePicture")};var V={width:function(e){return!
isNaN(e)&&e>0},height:function(e){return!isNaN(e)&&e>0},offsetX:function(e){return!
isNaN(e)},offsetY:function(e){return!isNaN(e)},customClosePosition:function(e)
{return"string"==typeof e&&["top-right","bottom-right","top-left","bottom-
left","center","top-center","bottom-center"].indexOf(e)>-
1},allowOffscreen:function(e){return"boolean"==typeof
e}};e.setOrientationProperties=function(e)
{e.hasOwnProperty("allowOrientationChange")&&(c.allowOrientationChange=e.allowOrien
tationChange),e.hasOwnProperty("forceOrientation")&&(c.forceOrientation=e.forceOrie
ntation);var
t=["setOrientationProperties","allowOrientationChange",c.allowOrientationChange,"fo
rceOrientation",c.forceOrientation];i.executeNativeCall(t)},e.getOrientationPropert
ies=function()
{return{allowOrientationChange:c.allowOrientationChange,forceOrientation:c.forceOri
entation}},e.resize=function(){if(this.getState()!==a.DEFAULT&&this.getState()!
==a.RESIZED)N(s.ERROR,"Ad can only be resized from the default or resized
state.","resize");else if(l.width&&l.height){var
e=["resize","width",l.width,"height",l.height,"offsetX",l.offsetX||
0,"offsetY",l.offsetY||
0,"customClosePosition",l.customClosePosition,"allowOffscreen",!!
l.allowOffscreen];i.executeNativeCall(e)}else N(s.ERROR,"Must set resize properties
before calling resize()","resize")},e.getResizeProperties=function()
{return{width:l.width,height:l.height,offsetX:l.offsetX,offse
tY:l.offsetY,customClosePosition:l.customClosePosition,allowOffscreen:l.allowOffscr
een}},e.setResizeProperties=function(e){if(P(e,V,"setResizeProperties",!0))for(var
t=["width","height","offsetX","offsetY","customClosePosition","allowOffscreen"],n=t
.length,r=0;r<n;r++){var
i=t[r];e.hasOwnProperty(i)&&(l[i]=e[i])}},e.getHostSDKVersion=function(){return
C};var D={initialize:function(e)
{this.parameters=e,this.errors=[],this.arguments=["createCalendarEvent"]},parse:fun
ction(){this.parameters?
(this.parseDescription(),this.parseLocation(),this.parseSummary(),this.parseStartAn
dEndDates(),this.parseReminder(),this.parseRecurrence(),this.parseTransparency()):t
his.errors.push("The object passed to createCalendarEvent cannot be null.");var
e=this.errors.length;return
e&&(this.arguments.length=0),0===e},parseDescription:function()
{this._processStringValue("description")},parseLocation:function()
{this._processStringValue("location")},parseSummary:function()
{this._processStringValue("summary")},parseStartAndEndDates:function()
{this._processDateValue("start"),this._processDateValue("end")},parseReminder:funct
ion(){var e=this._getParameter("reminder");e&&(e<0?
(this.arguments.push("relativeReminder"),this.arguments.push(parseInt(e)/1e3)):
(this.arguments.push("absoluteReminder"),this.arguments.push(e)))},parseRecurrence:
function(){var
e=this._getParameter("recurrence");e&&(this.parseRecurrenceInterval(e),this.parseRe
currenceFrequency(e),this.parseRecurrenceEndDate(e),this.parseRecurrenceArrayValue(
e,"daysInWeek"),this.parseRecurrenceArrayValue(e,"daysInMonth"),this.parseRecurrenc
eArrayValue(e,"daysInYear"),this.parseRecurrenceArrayValue(e,"monthsInYear"))},pars
eTransparency:function(){if(this.parameters.hasOwnProperty("transparency")){var
e=this.parameters.transparency;S(e,["opaque","transparent"])?
(this.arguments.push("transparency"),this.arguments.push(e)):this.errors.push("tran
sparency must be opaque or transparent")}},parseRecurrenceArrayValue:function(e,t)
{if(e.hasOwnProperty(t)){var n=e[t];if(n&&n instanceof Array){var
r=n.join(",");this.arguments.push(t),this.arguments.push(r)}else
this.errors.push(t+" must be an array.")}},parseRecurrenceInterval:function(e)
{if(e.hasOwnProperty("interval")){var t=e.interval;t?
(this.arguments.push("interval"),this.arguments.push(t)):this.errors.push("Recurren
ce interval cannot be null.")}else
this.arguments.push("interval"),this.arguments.push(1)},parseRecurrenceFrequency:fu
nction(e){if(e.hasOwnProperty("frequency")){var t=e.frequency;S(t,
["daily","weekly","monthly","yearly"])?
(this.arguments.push("frequency"),this.arguments.push(t)):this.errors.push('Recurre
nce frequency must be one of: "daily", "weekly", "monthly",
"yearly".')}},parseRecurrenceEndDate:function(e){var
t=e.expires;t&&(this.arguments.push("expires"),this.arguments.push(t))},_getParamet
er:function(e){return this.parameters.hasOwnProperty(e)?
this.parameters[e]:null},_processStringValue:function(e)
{if(this.parameters.hasOwnProperty(e)){var
t=this.parameters[e];this.arguments.push(e),this.arguments.push(t)}},_processDateVa
lue:function(e){if(this.parameters.hasOwnProperty(e)){var
t=this._getParameter(e);this.arguments.push(e),this.arguments.push(t)}}}}();

You might also like