【问题标题】:Javascript file modifying an html file that it is not called from? Jquery SelectorsJavascript文件修改了未调用的html文件? jQuery 选择器
【发布时间】:2012-04-22 06:09:43
【问题描述】:

是否有可能拥有一个能够识别两个不同 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 页面的顶部被调用。

谢谢

【问题讨论】:

    标签: javascript jquery html file selector


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速响应,那么所有客户端都没有办法做到这一点?
    • 并非没有一些服务器端组件的味道。您对服务器端语言有任何经验吗?
    • 只是一点点 Ruby on rails,我想我将研究一直对我感兴趣的服务器端 javascript,但我一直没有时间去探索它。谢谢
    【解决方案2】:

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

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

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

    【讨论】:

    • 同意...技术上正确 (+1)。但是我们不能说那些不是一流的页面……不应该是模式的首选吗?
    • 这是一件可怕的事情,但它确实有效。除了从主脚本关闭弹出窗口之外,我还没有找到任何应​​用程序。
    • 不错的 hack 我用它来解决当前的问题(由于时间限制),但将来我绝对应该使用某种服务器端脚本。
    【解决方案3】:

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

    这也适用于跨域。

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

    【讨论】:

    • HTML5 令人兴奋的新功能...但请确保您了解您的用户群并且他们的浏览器是有能力的。选择此解决方案会增加对用户浏览器功能的依赖。
    【解决方案4】:

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

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

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

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

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

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

    注意:对于专业网站,这些方法都不是我会认真考虑的方法,无论用户从哪里访问数据,这些数据都应该是持久的或以任何方式安全的。

    【讨论】:

      猜你喜欢
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 2014-09-13
      • 2013-04-06
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多