【问题标题】:Bookmarklet requiring jQuery doesn't work需要 jQuery 的书签不起作用
【发布时间】:2012-04-27 18:54:25
【问题描述】:

我正在尝试基于jQuery Color Picker Plugin 创建一个书签。如果我在页面标题中包含 JavaScript 文件 (example),一切正常,但如果我将脚本从小书签附加到页面,颜色选择器将永远不会被初始化 (example)。为了清楚起见,我尽可能地简化了 js。

这是书签代码:

javascript:(function()%20{_my_script=document.createElement('script');_my_script.type='text/javascript';_my_script.src='http://forwardbeats.com/sandbox/colorpicker.js';document.getElementsByTagName('head')[0].appendChild(_my_script);})();

脚本被附加到页面就好了,似乎正在运行,但选择器永远不会被初始化。关于可能出了什么问题的任何想法?

注意:我通常也会首先测试 jQuery,但对于这个示例,我假设它已经在页面上。

编辑:我发现并解决了这个问题。我将在下面发布我的答案,希望我可以帮助任何有类似情况的人。

【问题讨论】:

  • 为什么您的书签中有%20?这会导致语法错误。
  • 哦,真的吗?我不知道!在我见过的大多数书签中,空格被编码为%20
  • 检查控制台以查看是否附加了脚本元素,以便排除
  • 是的,它正在被附加。如果我将警报或控制台日志消息添加到它被调用的 js 文件中,那么我知道脚本正在运行。我只是不明白为什么颜色选择器没有以这种方式初始化
  • 你不需要空格,更不用说%20,在function() 标记之后(在左大括号之前)。

标签: javascript jquery bookmarklet color-picker


【解决方案1】:

问题根本不在于书签,而在于我包含的 js 文件。出于某种原因,代码在包含在页面中时运行良好,但在被小书签附加时却不行。

我注意到在使用小书签时,脚本在注册之前尝试调用颜色选择器初始化函数。为了解决这个问题,我所要做的就是改变我打电话给colorPickerInit() 的地方。之前,我在eye() 之后调用它,它负责调用在colorPickerInit() 中注册的函数。通过在eye() 中移动colorPickerInit(),现在一切正常!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2012-05-23
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多