Javascript 如何禁用嵌入式颤振web应用程序的滚动动作?

Javascript 如何禁用嵌入式颤振web应用程序的滚动动作?,javascript,html,css,flutter,flutter-web,Javascript,Html,Css,Flutter,Flutter Web,关于SO的第一个问题-请温柔一点 我有一个简单的Flitter web应用程序,我将它嵌入到现有的网页中。该应用程序托管在firebase上,我在单独托管的父页面上使用iFrame来显示Flatter应用程序。下图 我遇到的问题是,每当指针位于iframe上时,flifter应用程序就会吸收滚动/滚轮事件,即使该应用程序不包含可滚动的内容。我已经尝试了我能研究的一切,从js脚本到iframe属性再到css。什么都不管用。父页面也不接受jQuery 下面是我在父网页上尝试的代码-控制台日志事件没

关于SO的第一个问题-请温柔一点

我有一个简单的Flitter web应用程序,我将它嵌入到现有的网页中。该应用程序托管在firebase上,我在单独托管的父页面上使用iFrame来显示Flatter应用程序。下图

我遇到的问题是,每当指针位于iframe上时,flifter应用程序就会吸收滚动/滚轮事件,即使该应用程序不包含可滚动的内容。我已经尝试了我能研究的一切,从js脚本到iframe属性再到css。什么都不管用。父页面也不接受jQuery

下面是我在父网页上尝试的代码-控制台日志事件没有被触发(至少在使用chrome开发工具时),因此我还没有尝试将控制盘事件传递给父网页

    <style>
 #app{
height: 280px;
 width: 90%;
 background-color: white;
 margin: 0 auto;
 border: none;
overflow-y: hidden;
 }
 </style>
<iframe id="app" src="https://fireball-apps-testimonials.firebaseapp.com/" scroll="no" scrolling="no"></iframe>
<script type="text/javascript">

var app = document.getElementById("app");
function myFunction(event) {
console.log('event triggered');
if (event) {
 if (event.wheelData< 0)
 {
 console.log('scrolling up');
 }
 else if (event.wheelData> 0)
 {
 console.log('scrolling down');
 }
}
else {
console.log('event is null');
}
}

app.addEventListener("wheel", myFunction);

</script>

#应用程序{
高度:280px;
宽度:90%;
背景色:白色;
保证金:0自动;
边界:无;
溢出y:隐藏;
}
var app=document.getElementById(“app”);
函数myFunction(事件){
console.log(“事件触发”);
如果(事件){
if(事件数据<0)
{
log(“向上滚动”);
}
else if(事件数据>0)
{
log(“向下滚动”);
}
}
否则{
log('event is null');
}
}
附录addEventListener(“轮子”,myFunction);

我尝试了许多方法来禁用父网页上有关CSS和Javascript的滚动操作。问题是,即使您没有可滚动的小部件,flatter也会侦听所有滚动事件。因此,目前我已搜索相关代码,以禁用滚动操作:

  • 使用
    flatterbuildweb
  • 打开
    build/web/main.dart.js
  • 搜索并删除
    s.addEventListener.apply(s,[“wheel”,q,r])
  • 警告:不建议编辑生成文件,但这是我发现的在iFrame中禁用滚动操作的唯一方法。删除事件侦听器时,无法在iFrame中滚动,此解决方法仅适用于桌面


    有关更多信息,请参阅。

    您找到解决方法了吗?我还想知道如何解决此问题