2014-08-28 87 views
0

我正在做一些與Pipeline Pilot的工作,並注意到所有內置的HTML組件都可以執行某些操作,比如可摺疊面板,選項卡或其他可能存在一些我無法訪問的JavaScript會導致我否則會使WebGL組件在加載時中斷。沙箱WebGL插件

有沒有一種方法可以「沙盒」或以其他方式隔離WebGL組件以進行自己的保護?奇怪的問題,而不是最好的看待它的方式,但我不能改變WebGL組件內部的任何代碼,並且我不能更改任何內部Pipeline Pilot代碼,所以我需要一個不合理的解決方案任何一種。

回答

1

@David說過,使用iframe可能會做你想做的。在這種徒勞的,你可以發現,如果你在一個iframe是與

var isInIFrame = function() { 
    return window != window.top; 
}; 

我使用了我的變化CSS取決於如果我在iframe我還是不

var updateCSSIfInIFrame = function() { 
    if (isInIFrame()) { 
    document.body.className = "iframe"; 
    } 
}; 

那麼我可以用CSS來改變格式。例如:

/* only applies if in an iframe assuming the function above was called. */ 
body.iframe { 
    width: 100%; 
    height: 100%; 
    margin: 0px; 
    padding: 0px; 
    overflow: hidden; 
} 

.iframe>canvas { 
    width: 100%; 
    height: 100%; 
} 
+0

謝謝,當我再次訪問代碼時,我會給這個鏡頭。 – Illumin8s 2014-08-31 16:31:19

1

說實話,我很難理解你的確切問題,但是如果你想要沙箱的HTML去去的地方是結合外部域。通過在不同的域上託管相關內容,跨域策略可以完全對兩種環境進行沙盒處理。另一種選擇是在HTML5中使用標記的​​屬性,但由於它尚未得到完全支持,我實際上不會提供此建議。

+0

謝謝。這可能*會做這項工作。考慮到我在應用程序框架和WebGL組件中幾乎不能訪問底層的JavaScript,很難將其表達爲一個連貫的問題。我認爲它值得一試。 – Illumin8s 2014-08-29 00:51:53