问题
I've been trying to create an mraid compliant ad, but haven't gotten very far. According to the official documentation, which can be found at this link, the addition of a simple
<script src='mraid.js'></script>
should be sufficient. This, however, doesn't seem to be the case. I copied the following example code to test the existence of the mraid object, but it just stays undefined. The precise FireBug error is:
ReferenceError: mraid is not defined
I'm trying to execute the following (very simple) code:
if(mraid.getState() !='ready'){
console.log("MRAID NOT READY");}
Does anyone have any experience with this problem?
回答1:
Yes, it's not quite as simple as that, and the spec isn't entirely clear.
mraid.js is injected by whatever ad platform your being flighted from.
It looks something like this:
App -> Ad SDK -> MRAID Ad
The Ad SDK instantiates a UIWebView and injects mraid.js to be available. Then your script tag above finds it, loads it, and everything else resolves itself from there.
Your options are either:
- make your own mraid.js for testing purposes that has enough of the spec to be handy /testing
- spin up a mobile ad server SDK that does the above for you, and then just test against that
- checkout http://webtester.mraid.org which will let you avoid some of the above
2 is the most precise. 1 & 3 get you far, but nothing compares to the real thing in app with an actual ad server's sdk handling things.
来源:https://stackoverflow.com/questions/15432260/mraid-undefined