【问题标题】:How do I create a passback tag from a URL?如何从 URL 创建回传代码?
【发布时间】:2011-12-25 09:59:03
【问题描述】:

我有几个广告网络能够集成回传 URL(当付费广告展示不可用时请求),但一个广告网络只能接受回传脚本标记,而我没有。

回传脚本需要将 URL 的内容(728x90 图像或 Flash 横幅)加载到自身中(它还需要执行它加载的 Javascript)。谁能帮我构建一个回传脚本标签?

我试过了:

<SCRIPT language="Javascript">

// loads within itself, in the 728x90 banner space

document.write("<SCR"+"IPT language=\'Javascript\' src=\'http://www.mydomain.com/passback.php\'></SCR"+"IPT>");

</SCRIPT>

但出现脚本错误。有什么想法吗?

【问题讨论】:

  • @Tom passback.js 文件长什么样?
  • 你遇到了什么错误?
  • 您的代码(您显示的部分)很好。 src 属性中指向的脚本会导致问题 - 愿意分享吗?另外,在 Jan 的问题之后 - 你遇到了什么脚本错误?
  • passback.php 的 MIME 类型是否正确?

标签: javascript redirect ads


【解决方案1】:

只是一个想法。如果你试试这个,它会带来什么?

<SCRIPT language="JavaScript" type="text/javascript">

var script = document.createElement("script");
script.type = "text/javascript";  // This is for HTML 4.01 validation
script.src = "http://www.mydomain.com/passback.php";
document.getElementsByTagName("head")[0].appendChild(script);

</SCRIPT>

【讨论】:

  • 你没有从上面的代码中得到错误,它在别处
  • 我同意@alessioalex,这个错误很可能在你的脚本中。尝试在 jslint 之类的东西中验证您的 javascript,以尝试查找丢失的分号和花括号。我也赞成上述答案,因为这是一种很好的技术。
  • 我也同意@alessioalex。
  • 很明显,作者遇到的错误不是由他的document.write... 代码引起的——那么为什么还要费心重写那部分呢? src 中链接的脚本(或页面上的其他潜在脚本)导致错误弹出。
  • 正在加载的脚本是一个 Adsense 标签,当 Adsense 标签试图链接到它自己的外部脚本时,就会出现脚本错误。
【解决方案2】:

已经提供的脚本与我经常使用的脚本接近:

var js = document.createElement("script");
js.type = "text/javascript";
js.src = "//www.mydomain.com/passback.php";
document.getElementsByTagName('head')[0].appendChild(js);

唯一不同的是没有指定 URL 方案,因此如果您在 http 服务器上运行,则将调用 http url,如果您在 https 上运行,则将调用 https - 混合它们是原因您的脚本可能无法加载。

对于您的脚本错误,我建议您使用 Chrome 和开发人员工具 - 这将使您能够准确地看到哪一行给您该错误。

【讨论】:

  • +1 特别是因为没有http:||https:。为什么人们会添加它?
  • 从标准的角度来看,@Josh 指定 URL 方案是“正确”的方式。无方案 url 实际上更像是一种 hack,它利用了所有浏览器在不确定使用什么时都会回退到当前页面方案的事实(最近的发现)。也就是说,我确实使用并提倡无方案的网址,但也承认标准的来源。既然无方案 URL 如此流行和有用,它们可能会成为标准。但最初的意图是让所有 URL 都有一个方案。方案列表比 http/https 长得多,而且 url 可以在网络之外使用。
  • 我知道其他方案,但这个问题是在浏览器中,所以任何人都会因尝试从https 方案访问http 而导致错误吗?
【解决方案3】:

以下函数将另一个文档加载到文档正文中。新文档的 URL 应位于同一域中,在您的情况下为 http://www.mydomain.com/

您需要将以下脚本另存为 .js 文件,并将其放在应放置广告的位置。

function load(url) {
    var req = null;

    if (window.XMLHttpRequest) {
        req = new window.XMLHttpRequest();
    }
    else if (window.ActiveXObject) { //fallback
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) { }
        }
    }

    if (req) {
        req.open("GET", url, false);
        req.send(null);
        return req.responseText;
    }
}

document.write(load("http://www.mydomain.com/passback.php"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2018-11-01
    • 2013-06-28
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多