今天突发奇想,搞定innerHTML动态导入JS。
早上醒来,就想优化一下ggad,如果有长条GGAD,就不准备显示框状GGAD。
其实我目前一直是做到显示与不显示。我想优化成载入与不载入。我猜想这个和AD的显示率会有些关系,影响到最终的收益。
如果想做到载入与不载入,要么在PHP输出前就决定要显示哪种广告。这个很不方便。因为我当前是依赖与对内容的判断,选择放哪种广告。看来PHP是帮不了忙了。
接下来就是靠JS了。首先得不载入,仅在需要时载入。我用到了encodeURIComponent函数,对script转换成字串,仅在需要时用decodeURIComponent进行还原后载入。
本以为做到这一步就成功了。结果郁闷地发现innerHTML是导入了,但竟然还是不载入。在网上找了好久,发现有同样郁闷的人,原因是innerHTML只载入静态的内容,不会加载动态的JS(不会再次与服务器联系)。
最终看到高人提醒用DIV.appendChild来强制加载新对象实现,这样会强制再次与服务器联系。
试下来果然成功了!看来将来有希望加载各种各样的广告,大大小小不一,框的条的都可以!
ps.还看到另一种很复杂的方法,看得我都想放弃了,还好我不轻易放弃,让我找到好方法了。
2011-6-26 丢人啊!我发觉昨天并没有成功,原来我把index.php覆盖错了。弄正确后,发觉script字符串没问题,但动态导入外部JS的那个appendChild出问题了。查了好久,网上也有人有这个问题,我会对这个问题继续研究的,直至解决问题!
2011-6-28 在试了两天后,终于发现ggad的document.write造成了这个问题无法解决,除非重写document.write函数。我也不纠结了,还是改回原来的方式吧。就当是学习了document.createElement("script")吧。

找不到匹配内容的话,出来的广告价格都很低的。那就和初衷背道而驰了。