自己写的html然后里边有一个iframe引入地址是百度网的话,我想从百度网获取一点文本的话,能够实现吗,应该怎么做?
同一个域名下的话,是可以实现的,但是这个不同,就遇到问题了,用jquery的话,获取不到内容;用test()就会报错。
他的报错
_Uncaught DOMException: Blocked a frame with origin "http://127.0.0.99"from accessing a cross-origin frame.
_
HTML代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<style>
div.dd {
width: 500px;
height:500px;
}
iframe {
width: 100%;
height: 500px;
background-color: rgba(0,0,0,0.1);
}
</style>
</head>
<body>
<div class="input">
内容:<input type="text" id="input" value="111">
<button class="btn btn-success" xonclick="test()">获取</button>
<iframe id="iframea" name="iframe1" src="https://www.baidu.com/" frameborder="0">
</iframe>
</div>
</body>
<script>
$(function() {
$('.btn').click(function() {
// var $text = $("#iframea").contents().find(".mnav").text;//jquery 方法1
// var $text = $("#iframea").contents().find("#ccc").text;
// alert($text)
// $('#input').val($text);
var word = $("#iframea").contents().find('#u1').text();
console.log(word)
alert(word);
})
})
function test() {
// var a = document.getElementById("iframea").contentWindow.document.getElementById("u1").value;
// var word = document.getElementById("iframea").contentWindow.document.getElementById("u1")
// alert(word)
}
</script>
</html>
小生在此谢过各位看官和大神!!!
br
br
br
兜兜转转,问题还是没有完全解决,但相对于上周,有多知道了一点东西。
知道了如何用jsonp跨域获取数据;可是,最重要的一步是如何将百度网转换成jsonp形式呢?要把他转换成jsonp形式,才可以抓取。
首先是 http://127.0.0.1/za_soft/aaaa.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<!-- <script src="https://www.baidu.com/"></script> -->
<script type="text/javascript">
$.ajax({
type: "get",
async: false,
url: "http://127.0.0.1:8800/zzzzz.js",
dataType: "jsonp",
jsonp: "callBack", // 传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般认为:callback)
jsonpCallback: 'flightHandler', // 自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写“?”,jQuery会自动为你处理数据
success: function(json) {
alert('您查询到航班信息:票价:' + json.price + '$, 余票:' + json.tickets + '张。' + '航班:' + json.code);
console.log($(this).html);
},
error: function() {
alert('失败!!!!');
}
})
</script>
</head>
<body>
内容:<input type="text" id="input" value="111">
<button class="btn btn-success" onclick="test()">获取</button>
<iframe id="iframea" name="iframe1" src="https://www.baidu.com/" frameborder="0">
</iframe>
</body>
</html>
下边是http://127.0.0.1:8800/zzzzz.js
flightHandler({
"code": "CA1998",
"price": 1780,
"tickets": 5
});
我最终的目的是想要将
ajax里面的 url: "http://127.0.0.1:8800/zzzzz.js",
地址换成 url: "https://www.baidu.com/",
所以问题来了, 怎么样把百度网转换成一个jsonp形式的文件呢?
求教求教啊。。。。。。