2010-07-27 45 views
2

现在,我发现在这里我无法在一个页面中编写JavaScript以在另一个外部页面上输入表单数据,所以我想这样做用一个基于浏览器的小书签代替。Javascript书签从一个页面获取信息并将其提交到另一个页面上形成

我能够用这个书签的代码段来访问我的原始页面上的数据:

javascript:var%20thecode=document.myForm.myTextArea.value; 

如果我在浏览器中手动打开外部基于Web的形式,这个代码改变什么文本箱:

javascript:void(document.externalForm.externalTextArea.value="HELLO WORLD")); 

而且这个书签代码将打开与外部形成一个新的浏览器窗口:

javascript:newWindow=window.open("http://www.url.com","newWindow");if(window.focus){void(newWindow.focus());} 

但是,当我尝试将这些片段放在一个小书签中以在新窗口中打开外部窗体并更改其中的数据时,我无法访问newWindow中的任何元素。例如,这不起作用检查在新窗口中的文本区域的现有价值

javascript:var%20newWindow=window.open("http://www.url.com","newWindow");if(window.focus){void(newWindow.focus());}window.alert(newWindow.document.externalForm.externalTextArea.value); 

一旦我使用书签代码来打开新窗口newWindow,我似乎不能够访问新窗口中的元素。任何建议我失踪?谢谢。

回答

0

这是因为书签在当前网页的沙箱(环境)内运行。由于您不允许访问不具有相同协议,域名和端口的其他页面(DOM),因此当协议,域和端口不能访问的document属性时比赛。顺便说一句,在页面上访问iframe s也是如此。

正如你在谈论“外部形式”,我想你不会留在同一个域。其他示例检索或操作当前页面上的数据(此时)并且不会出错。

另请参阅Same origin policy

更新:(等人)关于美味书签:它的代码实际上写道:

(function() { 
    f = 'http://delicious.com/save?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&v=5&'; 
    a = function() { 
     if (!window.open(f + 'noui=1&jump=doclose', 'deliciousuiv5', 'location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550')) 
      location.href = f + 'jump=yes' 
    }; 
    if (/Firefox/.test(navigator.userAgent)) { 
     setTimeout(a, 0) 
    } else { 
     a() 
    } 
})() 

所以,是的,这些参数只是使用GET请求转移。

+0

谢谢。必须有某种方式,书签打开一个新窗口可以从原始窗口访问信息,给定各种现有的小书签,例如“在Facebook上分享”或“在Delicious上书签”,这些书签预先填充来自事先窗口。它并没有在我看来像他们都是“得到”要求,但也许他们是。 – CodeEnthusiast 2010-07-28 17:44:05

+0

@CodeEnthusiast:你也可以使用来自小书签的POST提交这些数据(使用JavaScript提交的表单),但它不会很干净。 – thejh 2010-11-19 20:19:28

相关问题