1

我正在使用 colorbox 显示一个surveymonkey 嵌入式调查作为弹出阻止程序的解决方法。一切正常,直到他们完成调查并返回现场。颜色框再次弹出,不显示任何内容。我需要找到一种方法来验证脚本标签之间没有数据,然后将其关闭或仅在有内容时才显示它。我在页面上使用了萤火虫,在他们调查完成之前和之后:

前:

<script src="https://www.surveymonkey.com/jsPop.aspx?sm=4GSXwWYQ306AtiO3hP45Jg_3d_3d">
 document.write("<iframe id=\"sm_e_s\" src=\"https://www.surveymonkey.com/s.aspx?sm=4GSXwWYQ306AtiO3hP45Jg%3d%3d\" width=\"500\" height=\"1000\" style=\"border:0px;padding-bottom:4px;\" frameborder=\"0\" allowtransparency=\"true\" ><a href=\"https://www.surveymonkey.com/s.aspx?sm=4GSXwWYQ306AtiO3hP45Jg%3d%3d\">Please take our survey</a></iframe></script>");if(document.getElementById('surveyMonkeyInfo')) {document.getElementById('surveyMonkeyInfo').style.width='500px';document.getElementById('surveyMonkeyInfo').style.fontSize='10px';document.getElementById('surveyMonkeyInfo').style.color='#666';}
</script>
<iframe id="sm_e_s" height="1000" frameborder="0" width="500" allowtransparency="true" style="border:0px;padding-bottom:4px;" src="https://www.surveymonkey.com/s.aspx?sm=4GSXwWYQ306AtiO3hP45Jg%3d%3d">
</iframe>

(我省略了一些 iFrame 脚本,因为它非常冗长且不必要)

后:

<script src="https://www.surveymonkey.com/jsPop.aspx?sm=4GSXwWYQ306AtiO3hP45Jg_3d_3d">
</script> 

似乎应该有一个简单的解决方案,但我只是看不到我的手指!

编辑:这是 HEAD 中的内容,如果我能找到一种方法来检查脚本标签中是否有任何内容,那么我可以阻止颜色框在开始时加载:

    <link rel="stylesheet" href="/colorbox/colorbox.css" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="/colorbox/jquery.colorbox-min.js"></script>
    <script>
        jQuery(document).ready(function () {
        $(".inline").colorbox({inline:true, href:"#inline_content", open:true,});
        });

    </script>

EDIT2:我又回来了!所以 JRods 的建议有助于在脚本标签为空时阻止颜色框运行(这正是我所要求的,所以谢谢!)但我从未考虑过脚本何时运行的层次结构。如果我们在执行之前检查标签是否为空,那么它们将始终为空,因此颜色框永远不会打开 #inline_content 。有没有人建议运行脚本,检查它,然后围绕它运行颜色框?

4

1 回答 1

2

给你的脚本标签一个唯一的 id。

<script id="myscript" src="https://www.surveymonkey.com/jsPop.aspx?sm=4GSXwWYQ306AtiO3hP45Jg_3d_3d">
</script> 

然后您可以使用 jqueryhtml()length查看标签内是否有任何内容

<script>
    jQuery(document).ready(function () {
        if ( $('#myscript').html().length !== 0 ) {
            $(".inline").colorbox({inline:true, href:"#inline_content", open:true,});
        }
    });
</script>
于 2014-01-29T21:45:40.403 回答