我在网站上添加了 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 从包含它的 div 中获取 html 时,$('#twitterDiv').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?
最佳答案
加载 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 中使用此变量。
关于javascript - 使用 jquery 检索原始 html,而不是呈现的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27404477/