Trong thử nghiệm của tôi, được cung cấp 2 tài liệu, A và B. Trong tài liệu, có khung nội tuyến, nguồn khung nội tuyến là tài liệu B. Câu hỏi của tôi là làm thế nào để sửa đổi tài liệu B phạm vi nhất định của biến?Angularjs: gọi phạm vi khác trong iframe
Đây là mã của tôi: Một tài liệu
<html lang="en" ng-app="">
<head>
<meta charset="utf-8">
<title>Google Phone Gallery</title>
<script type='text/javascript' src="js/jquery-1.10.2.js"></script>
<script type='text/javascript' src="js/angular1.0.2.min.js"></script>
<script>
var g ;
function test($scope,$http,$compile)
{
$scope.tryget = function(){
var iframeContentWindow = $("#iframe")[0].contentWindow;
var iframeDOM = $("#iframe")[0].contentWindow.document;
var target = $(iframeDOM).find("#test2");
var iframeAngular = iframeContentWindow.angular;
var iframeScope = iframeAngular.element("#test2").scope();
iframeScope.parentcall();
iframeContentWindow.angular.element("#test2").scope().tempvalue = 66 ;
iframeScope.tempvalue = 66;
iframeContentWindow.tt = 22;
iframeScope.parentcall();
console.log(iframeScope.tempvalue);
console.log(angular.element("#cont").scope());
}
}
</script>
</head>
<body>
<div ng-controller="test">
<div id="cont" >
<button ng-click="tryget()">try</button>
</div>
</div>
<iframe src="test2.html" id="iframe"></iframe>
</body>
</html>
tài liệu của tôi B:
<!doctype html>
<html lang="en" ng-app="">
<head>
<meta charset="utf-8">
<title>Google Phone Gallery</title>
<script type='text/javascript' src="js/jquery-1.10.2.js"></script>
<script type='text/javascript' src="js/angular1.0.2.min.js"></script>
<script>
var tt =11;
function test2($scope,$http,$compile)
{
console.log("test2 controller initialize");
$scope.tempvalue=0;
$scope.parentcall = function()
{
$scope.tempvalue = 99 ;
console.log($scope.tempvalue);
console.log(tt);
}
}
</script>
</head>
<body>
<div ng-controller="test2" id="test2">
<div id="cont" >
<button ng-click="parentcall()">get script</button>
</div>
{{tempvalue}}
</div>
</body>
</html>
Lưu ý: Trên thực tế có một số cách để làm điều đó, mà tôi cảm thấy nó giống như một hack thay vì cách thích hợp để hoàn thành công việc: tạo nút trong tài liệu b, sau đó liên kết với angularjs ng-click. Sau đó một tài liệu jquery "kích hoạt" bấm vào nút.
Chỉ là một lưu ý nhanh. Hãy nhớ rằng bạn không thể giao tiếp thường xuyên giữa iFrame và trang mẹ trừ khi chúng nằm trên cùng một miền. Có nhiều cách để làm điều đó, nhưng bạn không thể chỉ truy cập chúng trực tiếp. Chỉ để bạn không gặp vấn đề này sau :) –
Có, có cùng tên miền và cùng một dự án. Chỉ cần không thể xử lý đúng đối tượng JS và biến đó. Tự hỏi liệu có ai có ý tưởng hay hơn không. – Stupidfrog