Tôi đang làm việc trên trang web nhúng một trang khác từ một tên miền khác trong iframe. Nội dung của trang này phù hợp chính xác với iframe, vì vậy không có nội dung tràn và không có thanh cuộn. Tuy nhiên, nội dung có thể được phóng to bằng con lăn chuột.Dừng cuộn trên khung nội tuyến có thể phóng to
Nhưng trong Safari và Chrome, phóng to với con lăn chuột cũng cuộn toàn bộ trang. Tôi không muốn cuộn này xảy ra --- chỉ thu phóng khung nội tuyến. Làm thế nào tôi có thể ngừng cuộn này khi con chuột trên khung nội tuyến?
Tôi đã cố gắng tạo lại sự cố trong ví dụ tối thiểu trên JSFiddle: https://jsfiddle.net/twodee/57a68k3h. Khi tôi phóng to khung nội tuyến màu xanh lục, văn bản sẽ thu phóng nhưng trang cũng cuộn.
frame = document.getElementById('myframe');
frame_child = document.createElement('div');
var font_size = 12;
frame_child.addEventListener('wheel', function(e) {
font_size += e.wheelDelta;
frame_child.style.fontSize = font_size + 'px';
});
frame_child.style.width = '190px';
frame_child.style.height = '190px';
frame_child.innerHTML = 'this text should zoom';
frame.contentWindow.document.body.appendChild(frame_child);
#myframe {
background-color: #00FF00;
}
<ul>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
</ul>
<div>
<iframe id="myframe" height="200px" width="800px" src="about:blank"></iframe>
</div>
<ul>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
</ul>
EDIT: Ví dụ trên là một chút sai lệch trong đó các nguồn iframe là không thực sự tạo động bởi kịch bản của riêng tôi. Thay vào đó, nguồn được tạo ra bởi một trang web riêng biệt, mà dự kiến đầu vào biểu mẫu từ người yêu cầu. Đây là một CodePen thể hiện tốt hơn vấn đề của tôi: http://codepen.io/twodee/pen/PGqgyw. (JSFiddle chỉ cho phép các nguồn https: //.)
Khi tôi xoay bánh xe qua khung nội tuyến, khối 3D thu phóng và cuộn trang.
EDIT: Hiệu ứng tôi theo sau là những gì tôi thấy khi Google Maps được nhúng vào một trang. Hoặc Sketchfab. Khi tôi nhúng chúng vào một khung nội tuyến, tôi không phải làm bất cứ điều gì đặc biệt trong trang đang thực hiện nhúng để làm cho việc phóng to xảy ra mà không cần cuộn. Dường như có nội dung nào đó về nội dung được nhúng mà vô hiệu hóa cuộn, nhưng tôi không biết điều gì.
Run Code Snippet StackOverflow của không hoạt động vì một chính sách xuyên xuất xứ. JSFiddle hoạt động. – kaerimasu