【问题标题】:AJAX calls with third-party javascripts? [closed]使用第三方 javascripts 的 AJAX 调用? [关闭]
【发布时间】:2013-07-16 22:08:03
【问题描述】:

有问题的脚本是:

<script>
var idcomments_acct = '1234567890';
var idcomments_post_id;
var idcomments_post_url;
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='http://www.intensedebate.com/js/genericCommentWrapperV2.js'>
</script>

它调用了一个名为 IntenseDebate 的第三方博客评论系统。当用户提交新的 cmets 时,我想在 post-data 发送给第三方之前“拦截”它,这样我就可以将其存储在本地,然后然后像往常一样发送它。这完全有可能吗,还是我必须寻找其他选择?

【问题讨论】:

  • 你可以换行window.XMLHttpRequest
  • …或至少XMLHttpRequest.prototype.send
  • @tjameson — 他可以,但由于他链接到的脚本似乎没有使用 XMLHttpRequest,这不会有任何用处。 (都是 JSON-P)。
  • @Quentin - 嗯,这根本不是 POST,它只是通过 GET 以一种完全糟糕的方式将数据传递到 URL……

标签: javascript ajax


【解决方案1】:

看起来你指向的脚本甚至不做 POST,它只是做了一个 hacky GET 请求,滥用脚本标签的 src 属性中的查询参数。以下是相关代码:

var commentScript = document.createElement("script");
commentScript.type = "text/javascript";
commentScript.src = "http://intensedebate.com/js/genericCommentWrapper2.php?acct="+idcomments_acct+"&postid="+idcomments_post_id+"&title="+idcomments_post_title+"&url="+idcomments_post_url;
document.getElementsByTagName("head")[0].appendChild(commentScript);

您需要做的是获取head 部分中最后一个脚本标签的src。他们不清理他们的脚本,所以应该仍然存在。比如:

var children = document.getElementByTagName('head')[0].children;
var url = children[children.length-1].src;

从那里,只需剖析 url 即可获取原始查询参数。他们似乎使用以下内容:

  • acct- 账号ID
  • postid- 帖子编号
  • title- 帖子标题
  • url- 发布的网址

我在任何地方都没有看到帖子正文,所以也许所有内容都在标题中?

获取所有字段的快速技巧是使用正则表达式:

var parts = url.match(/acct=(.*)&postid=(.*)&title=(.*)&url=(.*)$/);
if (!parts) {
    alert("Regex couldn't parse all the things");
}
var acct = parts[0];
var postid = parts[1];
var title = parts[2];
var url = parts[3];

这个正则表达式没有测试并且不安全,但它应该可以完成工作=D。

【讨论】:

    【解决方案2】:

    将您自己的事件附加到他们的“添加评论”按钮以发送和存储评论数据。除非您真的想要第三方正在使用的所有数据,否则不要过于复杂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多