小编Dav*_*lin的帖子

如何防止iFrame操作导致外部页面滚动到它

首先,我知道有很多关于这种现象的问题,但到目前为止给出的解决方法都不会对我在这里的情况有所帮助.

在此输入图像描述

环境: 我的代码位于我无法控制的页面内的外部iFrame中.它的大小适合我的所有内容,因此我的iFrame中不会发生滚动.相反,外部页面可以向上和向下滚动以查看其内容.

问题: 我有一个内部iFrame,持有我无法控制的第三方广告.如果内部iFrame运行以下任何Javascript命令,则外部页面会向下滚动所有内容以将内部iFrame置于视图中:

  1. 模糊并专注于其中的元素
  2. window.location.href或document.location.hash到其中的一个锚点.

  3. scrollIntoView在它内部的元素上

这是一个同事放在一起的演示(等待5秒钟开始)

解决方案不起作用:

  1. 如果我控制了外页,我可以收听onScroll事件并阻止页面滚动,如果它不是来自鼠标滚轮或键上/下事件.但是,由于安全原因,我的外部iFrame无法访问主页面或阻止主页面向上或向下滚动.
  2. 我可以覆盖上面提到的所有Javascript方法,因此它们不起作用 - 但是,我内部iFrame中的广告实际上创建了自己的内部iFrame,它们具有该功能并导致相同的问题.
  3. 没有任何事件被传播,我可以看到我的iFrame可能会停止到达主页面.浏览器似乎直接监听最里面的iFrame.

javascript browser iframe scroll

14
推荐指数
1
解决办法
827
查看次数

PhoneGap 3.0 Android build命令无法执行:ant jar

我安装了带有Node.js的PhoneGap 3.0并配置了所有环境变量,以便javac,java和ant都能正常工作但是当我做一个基本应用程序创建并尝试为Android构建它时,我收到以下错误:

在创建android子项目期间发生错误.为Android平台创建Cordova项目:命令无法执行:ant jar

有任何想法吗?

ant android jar cordova

11
推荐指数
2
解决办法
2万
查看次数

在Android ScrollView类中使用smoothScrollBy方法

我有一个带有ScrollView的Android程序,当我在计算机上的模拟器上调用scrollBy方法时,它将正确地进行自动滚动,但不能在我的Android手机上执行.

这是代码:

public class RecordGameActivity3 extends Activity {
ScrollView myView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.recordgame3);
    myView = (ScrollView)findViewById(R.id.scrollView1);

}

public void addPlayer(View v)
{
    //Removed non-related code

    myView.smoothScrollBy(0, 50);
}
}
Run Code Online (Sandbox Code Playgroud)

此外,常规scrollBy方法不起作用或scrollTo方法(虽然我可能没有正确使用它,因为它也不能在计算机上工作).有谁知道什么可能是错的?

编辑:

Darrell的答案显示我的问题是我在一个函数中调用了我的smoothScrollBy方法,我在这个函数中更改了布局,使得滚动区域足够大,可以滚动.显然,当我在函数中调用它时,实际上没有应用更改,因此无法滚动.

因此,我使用他的建议更改了代码:

public class RecordGameActivity3 extends Activity {
ScrollView myView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordgame3);
myView = (ScrollView)findViewById(R.id.scrollView1);

// New code that listens for a change in the scrollView and then calls the scrollBy method.
ViewTreeObserver vto = myView.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() …
Run Code Online (Sandbox Code Playgroud)

android scrollview

5
推荐指数
1
解决办法
7922
查看次数

标签 统计

android ×2

ant ×1

browser ×1

cordova ×1

iframe ×1

jar ×1

javascript ×1

scroll ×1

scrollview ×1