设置HTML框架src在Safari中不起作用

时间:2018-12-13 22:50:28

标签: javascript java jquery html jsp

我受命重写从2000年开始构建的Javascript代码,因为它只能在IE浏览器中使用。它需要在所有浏览器中都能工作。

显然,这早于AJAX,他们使用框架集(甚至还没有iframe)将远程JSP / servlet调用执行到HTML框架中。这些框架除主框架外不显示任何HTML。然后,您需要确保更新代码参考,以了解从哪个帧执行哪个代码。这些框架让人头疼,但是我已经获得了这些调用才能在除Safari之外的所有浏览器中使用。

app.post("/api/login", async(req, res) => {
    console.log(req.body)
    const id = await users.login(req.body.username, req.body.password)
    console.log(id)
    currentID = currentID.concat(id)
})

app.get("/api/user", async(req, res) => {
    res.json(currentID)
    currentID = []
})

从那里,我将转到最上面的文档以查找要加载的特定框架。 url变量是一个JSP页面,具有由Java scriptlet创建的javascript。噩梦,是的,但是我没有时间/批准从头开始重写。

我在Safari中尝试了window.top,但是没有运气。该代码根本不会在Safari中执行。我也尝试过使用AJAX GET完全绕开框架,该AJAX GET在所有浏览器中均可使用,但是由于它是JavaScript,因此我必须使用eval,这是有效的安全风险。

$('frame[name="RegtypeFrame"]', window.parent.document).attr("src", url);

有人对如何解决此问题有任何建议或替代方法吗?我有一个解决方法,但这是有缺陷的安全风险。

1 个答案:

答案 0 :(得分:0)

原始代码似乎现在可以在Safari中使用,尽管我不确定原因。我在以前的尝试中清除了开发人员缓存。也许还有其他我不知道的缓存。如果您尝试通过ID选择框架,则不适用于非iframe。

render(){


  const columns = [
{
   text: 'VehicleName',
   dataField: 'VehicleName',
   sort: true,
   filter: numberFilter()
}, 
{
   text: 'Status',
   dataField: 'Status',
   sort: true
}, 
{
   text: 'Direction',
   dataField: 'Direction'  ,
   sort: true  
}, 
{
   text: 'IsOldData' ,
   dataField: 'isOldData',
   sort: true

},
{
   text: 'DriverPersNo' ,
   dataField: 'DriverPersNo',
   sort: true
},
{
   text: 'Speed' ,
   dataField: 'Speed',
   sort: true

},
{
   text: 'PosLat' ,
   dataField: 'PosLat',
   sort: true
},
{
   text: 'PosLong' ,
   dataField: 'PosLong',
   sort: true
},
{
   text: 'DateTimeGpsUtc' ,
   dataField: 'DateTimeGpsUtc',
   sort: true
},
{
   text: 'DateTimeGpsLocal' ,
   dataField: 'DateTimeGpsLocal',
   sort: true
}]
  return <BootstrapTable hover keyField='VehicleName' data= 
          {this.state.vehicleInfo} columns={columns}
                       filter={filterFactory() } 
                       pagination={ paginationFactory() }/>;

}