我的网站使用iframe中显示的第三方内容。第三方允许在其站点的头部上传CSS或JS文件,因此我可以更改iframe内容的外观。无法更改文件加载位置的位置(例如在主体之后移动所有JS文件)。
问题在于:我正在尝试更改div的文本而无法通过我的JS文件执行此操作。
<div id="exampleText">
There's nothing here!
<span>Try again at 4:00</span>
</div>
我知道我可以使用.html
或.innerHTML
甚至nodeType === 3
并设置nodeValue
来替换内容。这是放置在页面浏览器控制台内部时的工作方式之一:
jQuery(document).ready(function ($) {
document.getElementById('exampleText').innerHTML =
"Sorry, you're too early!<span>Check back one hour before class starts</span>";
});
然而,当我把它放在我的JS文件中并刷新页面时,我收到一个错误,指出:
Uncaught TypeError: Cannot set property 'innerHTML' of null(…)
为什么通过浏览器控制台放入页面内部时有效,而不是从文件中放入?这是由于JS运行后的网站加载?如何解决此问题以用我自己的内容替换文本?
答案 0 :(得分:0)
我找不到通过JS轻松完成此操作的方法,但我能够用CSS替换内容。以下是我管理它的方式:
#exampleText {
text-indent: -9999px;
line-height: 0;
}
#exampleText span,
#exampleText span:before {
text-indent: 0;
line-height: initial;
}
#exampleText span:before {
content: "Sorry, you're too early!";
display: block;
font-weight: 700;
}
此方法允许我保持跨度文本相同,同时仅更新没有周围元素的内容。