javascript - 我正在尝试显示我使用其类名定位的 Iframe 的某个部分
问题描述
我试图弄清楚是否有办法在另一个网站的 Iframe 中定位特定的类名,所以我只能显示 BTC 的当前价格。我不知道这是否可能,或者是否有办法以某种方式获取目标类的 .value 。希望有人可以提供帮助,我很感激。
<!DOCTYPE html>
<html>
<body>
<div>
<iframe id="price" src="" frameborder="0"></iframe>
</div>
<script>
const price = document.getElementById("price");
price.style.width = "400px";
price.style.height = "400px";
price.src = "https://blockfolio.com/coin/BTC";
price.contentWindow.document.getElementsByClassName("PriceFlasher__PriceFlasherWrapper-sc-14r4saj-0 gOyVu");
</script>
</body>
</html>
解决方案
很可能是不可能的,因为 iframe 具有阻止您从其他域访问文档的安全策略。此外,这可能是一个坏主意 - 类名以结尾的事实sc-14r4saj-0 gOyVu
意味着它很可能是捆绑的,并且当他们部署新版本时,类名会改变(破坏你的应用程序)。不确定 blockfolio 是否有 API,但这可能是您想要做的,例如:
可能更好的解决方案是:
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
const priceEl = document.getElementById('price');
let priceFloat;
const update = async () => {
const resp = await fetch('https://api.coindesk.com/v1/bpi/currentprice.json');
const json = await resp.json();
if (priceFloat !== json.bpi.USD.rate_float) {
const color = priceFloat && priceFloat < json.bpi.USD.rate_float ? 'red' : 'green';
priceFloat = json.bpi.USD.rate_float;
const money = formatter.format(json.bpi.USD.rate_float);
price.innerHTML = money;
price.style.color = color;
setTimeout(() => price.style.color = null, 500);
}
}
update();
setInterval(update, 5000);
<div id="price"></div>
推荐阅读
- ruby-on-rails - 我们可以在rails应用程序中加密一个压缩的java脚本文件吗?
- javascript - HTML 中的 JSON 解析
- python - 如何在 python-django 中使用 woocommerce api 获取所有没有隐藏(私有)产品的产品?
- crystal-lang - 集合下拉默认空白值
- django - 将 JSON 记录导入 Django 上的数据库并在 JSON 文件上执行 CRUD
- swift - 在 Swift 中从 Firebase 身份验证中删除用户
- reactjs - 使用redux-form按下下一个键盘按钮后如何使用useRef钩子选择下一个TextInput
- mysql - 无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器
- java - 如何唯一存储 docx 或 pdf 文件并在 oracle db 中检索它
- unix - 是否可以暂停在屏幕下运行的命令?