我保留了一些捐赠表格,其中包括GeoTrust SSL'智能图标'。这是通过在文档中包含脚本引用生成的,您希望在其中显示封条:
PFQuery *userProfile = [PFQuery queryWithClassName:@"UserSnapshot"];
[userProfile whereKey:@"Code" equalTo:_Code];
[userProfile getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (!object) {
// Did not find PFObject
// not executed
} else {
// Found PFObject
// also not executed....huh?
}
}];
他们的脚本显然是在做一个document.write(),如果/当geotrust很慢的话,它会阻止我捐赠表格的呈现时间长达几秒钟。
我无法使用' async'属性,因为document.write()。我当然无法编辑或重写GeoTrust的javascript。并将js加载到页脚中或者将“js”添加到“head”中。方法没有帮助,因为脚本需要在我们希望图标出现的标记内执行。更复杂的是,这些捐赠页面也是不同的第三方系统的一部分,这些系统充满了自己的javascript等。
这是一种似乎有效的方法,但我想知道是否有更好的方法:
<script type="text/javascript" src="//smarticon.geotrust.com/si.js"></script>
(PS我完全从http://www.dustindiaz.com/smallest-domready-ever偷走了domready测试)
编辑:如果不清楚,我正在做的是
编辑:在下面的评论之后,我只是简单地将它放入IFRAME中。
<div id="vs_seal"></div>
<script type="text/javascript">
r(function() {
var div = document.getElementById('vs_seal');
writebackup = document.write;
document.write = function(markup) {
div.innerHTML = markup;
document.write = writebackup;
}
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= '//smarticon.geotrust.com/si.js';
document.body.appendChild(script);
});
function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
</script>
我最初尝试将内容添加到隐藏的IFRAME中,然后将innerHTML从IFRAME复制到我的div中,但GeoTrust的javascript使得他们的弹出窗口非常漂亮需要在被点击的上下文中执行上。 innerHTML不会执行javascript,并且不仅仅显示IFRAME似乎没有优势。
感谢您的意见和建议!