【问题标题】:Inject javascript into head and ensure it will be there even after refresh将javascript注入头部并确保即使在刷新后它也会在那里
【发布时间】:2014-04-28 11:33:40
【问题描述】:

我们获得了基于云的人才管理企业解决方案。其中一项功能是能够在主欢迎页面(主页)上添加带有脚本的 HTML 小部件。

欢迎页面 UI 可以很好地自定义,但是一旦导航到另一个屏幕,欢迎页面当然就消失了。

我们做了一个简单的测试,在一个 HTML Widget 上添加 jQuery 脚本来改变屏幕上另一个特定的可点击 URL 元素的 URL,它就像一个魅力。我们希望按照这种方法来调整系统的 UI,通过隐藏不需要的 UI 或添加特殊样式使其看起来更漂亮,并执行其他操作,例如添加仅用于显示目的的新字段。

HTML Widgets 只能在欢迎页面中添加,但如果您导航到另一个屏幕,例如“我的培训记录”,HTML Widget 中的脚本将不再起作用,这是可以理解的。

我知道可以在头部 HTML 元素中注入 javascript,但我认为刷新后,脚本将被删除。

问题: 是否可以将 javascript 注入到 Head 元素中,并确保它始终存在并且即使在页面刷新后它也能工作?

我正在考虑在页面刷新后自行注入的代码。这可能吗?

【问题讨论】:

  • 提示需要将header注入cookie,每次刷新后读取cookie,如果在cookie中发现提示则应用注入。
  • 如果将js注入头部的代码始终在页面内部,那么这样做应该没有问题
  • 我可以控制仅在 HTML Widget 中添加脚本,该 Widget 仅在欢迎页面中执行。
  • 我会要求团队执行额外的测试以在 Head 中注入一些脚本,并找出如果您导航到另一个屏幕会发生什么。

标签: javascript jquery html css code-injection


【解决方案1】:

所以让我猜猜……你不想将 JQuery 注入到站点一次并确保它永远留在那里吗?

不,这不可能以干净的方式。

如果您有允许您操作文件的 API - 那么是的。但是没有可能的方法(我能想到的)用 JS 注入 JS 并让它留在那里。 ;D

如果 HTML 的内容是从 DB 生成的,那么您可以向 DB 注入一些代码。 另一种方法是……安装木马……但这是违法的!

【讨论】:

  • 是的,这就是我想做的。请注意,我们添加到 HTML 小部件的脚本将在每次打开欢迎页面时执行。
【解决方案2】:

我们已要求公司添加脚本标记以引用我们自己开发的 JavaScript,以 SCORM 格式打包作为培训课程材料的一部分,并使用 Course Publisher 上传到门户网站空间。然后可以从主页的源代码访问 JS 文件。

公司随后同意添加此脚本引用,我们能够使用动态脚本加载加载所有其他必需的脚本和 CSS,现在每次页面刷新都会加载它。这使我们能够使用客户端脚本和 CSS 自定义门户。

我们设法加载 jQuery 插件,以使用日期选择器和日历控件添加回历日历支持。我们能够在任何现有的公历日期归档和新添加的用于显示和数据输入的回历日期字段之间进行双向转换。

欲了解更多详情,请观看以下视频:

Part 1Part 2

【讨论】:

    【解决方案3】:

    如果我对您的理解正确,也许您正在寻找类似的东西。我不确定您是否有任何跟踪 cookie 或向每个页面添加内容的能力,但如果有,那么您基本上可以像 CMS 系统一样使用这些系统(如果您使用它也可以使用)。

    也就是说,您的问题的解决方案是找到可以在每个页面上运行的内容并使用它来嵌入代码。如果可以是 DB/CMS、跟踪代码、模板代码、通用 js 或类似的东西。

    这里有 2 条外部建议,但您仍然需要在页面上获取脚本

    https://www.optimizely.com/ab-testing/

    或者更便宜的选择

    Google Tag Manager

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 2022-01-12
      相关资源
      最近更新 更多