需要在iFrame中禁用Javascript

时间:2015-12-11 02:48:29

标签: javascript html5 iframe web

我正在建立投资组合网站;它是一个具有灯箱功能的寻呼机。所以,基本上我正在展示我已经构建的HTML5广告,我将其嵌入到iFrame中。这些广告都有音频,因此当我关闭灯箱时,音频会继续播放。现在我尝试了不同的方法,但都没有成功。我已经测试了一种有效的方法,我删除了iFrame的src(我分配了一个ID的ONE iFrame)。像这样:

$cspheader = "'default-src':'none' 'script-src':'self' 'unsafe-eval' //ajax.cloudflare.com/'font-src': 'self' 'connect-src':'self' 'img-src':'self' 'style-src':'self' 'media-src':'self'";
 header("Content-Security-Policy: ". $cspheader);

所以...我的问题是:

  • 什么是最好的"将此方法应用于每个iFrame的方法取决于与之交互的方法(尝试过,getElementsByClassName但不成功)
  • 有没有办法在iFrame中禁用脚本,所以我不必使用这种方法,因为我不是很疯狂
  • 此外,请不要发布jQuery解决方案或建议我使用jQuery,因为它不会有用,因为我正在编写简单的JavaScript

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您的iframe内容位于同一个域中,则很容易。当您的灯箱关闭时,您可以执行以下操作:

public static void markScriptAsRendered(FacesContext facesContext, String libraryName, String resourceName)
{
    getRenderedScriptResources(facesContext).put(
            libraryName != null ? libraryName+'/'+resourceName : resourceName, Boolean.TRUE);
    if (JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&
        JSF_JS_RESOURCE_NAME.equals(resourceName))
    {
        // If we are calling this method, it is expected myfaces core is being used as runtime and note
        // oamSubmit script is included inside jsf.js, so mark this one too.
        getRenderedScriptResources(facesContext).put(
                MYFACES_LIBRARY_NAME+'/'+MYFACES_JS_RESOURCE_NAME, Boolean.TRUE);
    }
}

<强> JSBin Demo