1

是否有可能拥有一个知道两个不同 HTML 文件的 javascript 文件?我该怎么做?

我希望能够有两个页面。index.html 和图片.html。我有一个 index.js 可以更改 index.html 的显示属性(它将基于人员的数据放入表中并使其看起来不错)。我希望这个当前的 index.js 文件也能够编辑pictures.html 文件并在那里更改信息。index.html 将链接到 pictures.html 以显示一个人的图片(基于我保存的人名 smith1.jpg、smith2.jpg、reagan2.jpg 等)。无论如何,这个javascript文件是否可以根据它们的id或第二个文件(pictures.html)的类来获取DOM元素,即使它“存在于”index.html中?当我说生活时,它在 index.html 页面的顶部被调用。

谢谢

4

4 回答 4

2

您需要探索服务器端编程来实现您的目标。 http://en.wikipedia.org/wiki/Server-side_scripting

...或者您可以编写一个客户端应用程序,其中“页面”是一个实际页面的单独视图,或者是从支持数据结构生成的。如果您想要创建/编辑的内容的持久性,您仍然需要服务器端编程。

于 2012-04-09T22:13:32.953 回答
2

如果脚本以某种连接方式加载,则它可以访问另一个页面上的元素。

例如,如果您使用 制作弹出窗口var popup = window.open(),则返回值将包含对打开的弹出窗口的引用,这允许访问弹出窗口中的元素。例如popup.document.getElementById('something')。在框架、iframe 等中加载的页面具有类似的访问方式。

所以是的,如果您的页面加载第二页,它的脚本也可以在那里工作。我建议除了从脚本打开和关闭弹出窗口之外避免这种情况;脚本应该留在其页面的框内,如果它需要在另一个页面上执行更大的操作,这通常意味着您需要稍微更改代码架构。

于 2012-04-09T22:19:12.243 回答
1

您也可以使用 html5(技术组)postmessage api。这允许您将消息发送到另一个页面,并在该页面中定义一个知道如何处理消息的事件处理程序。

这也适用于跨域。

这是一个博客,其中包含我刚刚通过谷歌随机找到的示例: http ://robertnyman.com/2010/03/18/postmessage-in-html5-to-send-messages-between-windows-and-iframes/

于 2012-04-09T22:36:06.100 回答
1

如果编辑实际的 HTML 文件是您的目标,则在客户端是不可能的。如果根据用户在另一个页面上所做的事情来显示图片是您所关心的,那么有很多选择。

  • 您可以通过 cookie 传递少量数据,例如用户通过 cookie 输入表格的内容,以便在预先建立的方案中访问正确的图像文件集。这实际上会一直持续到用户清除 cookie 为止。

  • 您可以将两个页面包装在同域 iframe 元素中,而父元素仅包含 JS。这将允许您在页面之间持久化数据并对 iframe 加载事件做出反应,但就像客户端 JS 中的所有内容一样,当您重新加载页面时,一切都消失了。

  • 较新的浏览器具有工作文件访问对象,这些对象并不是完全的安全噩梦。这些都是新的和非标准的,需要做一些工作才能使其适用于多个浏览器。这可用于保存包含信息的文件,当用户返回站点时可能需要提示他们上传这些信息。

  • 如果数据不敏感,您可以发挥创意并使用其他服务来存储数据集合。使用 twitter API 将数据推文到 twitter 帐户的某些公开可见页面(如果您在这里做的不仅仅是一个孤立的类项目,请查看服务条款)。然后在任何公开可见的 URL 上执行 Ajax 获取请求,并解析 HTML 以获取您的 twitter 数据。

我会研究的其他内容:dataURIs、html5 本地存储。

注意:对于专业站点,无论用户从何处访问数据,这些方法都不是我会认真考虑的方法。

于 2012-04-09T23:17:06.147 回答