【问题标题】:js/jquery Async Content Overwrites Pagejs/jquery 异步内容覆盖页面
【发布时间】:2015-09-01 18:17:01
【问题描述】:

我遇到了以下问题,也许有人可以给我一些建议或解决方法。我有以下问题:

我的主页的合作伙伴向我提供了我应该在主页上使用的代码,该代码将一些我真正想要的内容写入我的主页。

很遗憾,此内容仅与居住在特定地区的人相关。 所以我正在使用 ip-api 的服务,它返回当前用户所在的区域并让我使用它。这是通过 jsonp ajax 调用完成的。 如果此人在正确的区域,则应执行代码,如果不在,则不应执行。

问题是要执行的代码包含一个document.write。因此,如果我在 ip-api 回调中调用该代码,则文档已全部加载,并且 document.write 将覆盖我的页面。

所以最大的问题是:有没有办法像 PHP 的输出缓冲区一样将 document.write 输出捕获到变量中?或者也许是某种方式来覆盖 iframe 的内容而不是整个页面?任何阻止 document.write 覆盖页面并将其输出重定向到我的页面的一部分就足够了。

感谢您的宝贵时间 :)

PS:这是我正在谈论的代码:

        $.ajax({
            url: "http://ip-api.com/json/",
            dataType: "jsonp",
            success: function( response ) {
                if(
                        response["city"]=="Hamburg" ||
                        response["region"]=="SH" ||
                        response["region"]=="NW"

                ){
                    document.write("Some Content here");
                }
            }
        });

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    替换

    document.write("Some Content here");

    $('#my-container').html('Some content here');

    【讨论】:

    • Corrilld,请注意,您必须在页面上拥有这样一个 div 才能将内容注入:<div id="my_container"></div>。或者,你可以指定已有div的id,ajax注入的内容会覆盖指定div的内容
    • 不幸的是,这是不可能的,因为代码不是我的,我无法更改它(它是直接从我的合作伙伴加载的)。而且他不会为我更改他的代码,我对此没有足够的影响力;)
    • 那你需要继续前进,寻找一个称职的合作伙伴
    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多