我在网站上添加了Twitter时间表。它呈现,如果我点击页面上的查看源,我可以看到我添加到网站的相同的twitter小部件html:
<div id='twitterDiv'>
<a class="twitter-timeline"
href="https://twitter.com/twitterName"
data-widget-id="123456789012344567">
Tweets by @goodName
</a>
<script type="text/javascript">
window.twttr = (function (d, s, id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id; js.src= "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } });
}(document, "script", "twitter-wjs"));
</script>
</div>
但是当我使用jquery,$('#twitterDiv').html();
从包含它的div中获取html时,它会检索twitter生成的呈现的iframe,而不是原始的html:
<p data-twttr-id="twttr-sandbox-0"><iframe style="border: none; max-width: 100%; min-width: 180px; width: 238px;" height="600" scrolling="no" frameborder="0"></iframe></p>
<p>
<script type="text/javascript">
window.twttr = (function (d, s, id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id; js.src= "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } });
}(document, "script", "twitter-wjs"));
</script>
如何检索原始html,而不是呈现的iframe?
答案 0 :(得分:9)
加载Twitter脚本时,它会用iframe替换原始HTML。 JQuery只能访问新的HTML,而不是原始的HTML。
您可以做的是在加载Twitter脚本之前将原始HTML保存在变量中。
<a class="twitter-timeline" id=twitter-timeline1 ...>
Tweets by @goodName
</a>
<script type="text/javascript">
var original_twitter_html=document.getElementById('twitter-timeline1').innerHTML
window.twttr = ...
</script>
您可以稍后在Javascript中使用此变量。
答案 1 :(得分:2)
您使用iframe
此命令获得$('#twitterDiv').html();
,因为您在twitter widget
内呈现div
后正在运行该命令。
因此,为了获得原始html,您必须在呈现twitter widget
之前获取它。所以你的代码将是这样的:
<script type="text/javascript">
$(document).ready(function(){
var html = $("#twitterDiv").html();
alert(html);
})
$(window).load(function(){
window.twttr = (function (d, s, id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id; js.src= "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } });
}(document, "script", "twitter-wjs"));
});
</script>
答案 2 :(得分:0)
您可能希望尝试DOMNodeRemoved事件以在删除元素时读取内容。
$( "#questions" ).bind("DOMNodeRemoved",function( objEvent ){
console.log(objEvent)
});