AJAX调用第三方javascripts?

时间:2013-07-16 13:42:42

标签: javascript ajax

有问题的剧本是:

<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>

它调用名为Disqus的第三方博客评论系统。当用户提交新评论时,我想在发送给第三方之前“拦截”后期数据,这样我就可以在本地存储它,然后就像正常一样发送它。这是完全可能的,还是我将不得不寻找其他选择?

2 个答案:

答案 0 :(得分:1)

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

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);

您要做的是获取src部分中最后一个脚本标记的head。他们不清理他们的脚本,所以它应该仍然存在。类似的东西:

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

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

  • acct - 帐号ID
  • postid - 帖子ID
  • 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.

答案 1 :(得分:0)

将您自己的活动附加到“添加评论”按钮以发送和存储评论数据。除非您真的想要第三方使用的所有数据,否则不要过度复杂化它。