我有一个名为embedAmplienceModules()
的javaScript函数,它位于一个外部js文件中,需要在我们的网站上调用某些名为“amplience-module”的促销横幅。这个javaScript支持在名为Amplience的第三方合作伙伴内创建的这些横幅上的功能,如幻灯片,数字目录,生活方式图像上的热点链接,直接链接到产品等。
在发生两个事件之一后,需要加载此脚本:
ISSUE:
问题是,我的脚本通过上面的选项1而不是选项2成功加载。它只加载脚本一次。因此,如果我有三个Amplience促销横幅,则脚本仅加载最后一个。我已经尝试将调用包装到embedAmplienceModules()
内的(document).ready
函数中,但这不起作用。
在另一个用于所有全局站点j的外部javaScript文件中,我们有一个Ajax事件处理程序,其中是对embedAmplienceModules()
函数的调用,该函数在Ajax事件/刷新后正常工作。
以下是javaScript文件的内容。对此文件的调用位于网站的<head>
标记内。
function embedAmplienceModules() {
$('.amplience-module').each(function() {
var divId = $(this).attr('id'); // div id eg.'amp-m1-area'
var ampId = $(this).data("ampid"); // Pulls amp id eg. 'eba2d785-f2c1-494f-8f92-b3d95dff80f8' from 'data-ampid' attribute in contentmodules.html template
var ampDimWidth = $(this).data("ampdimwidth"); // Pulls amp module width eg. '747' from 'data-ampdimwidth' attribute in contentmodules.html template
var ampDimHeight = $(this).data("ampdimheight"); // Pulls amp module height eg. '241' from 'data-ampdimheight' attribute in contentmodules.html template
var ampBaseDir = $(this).data("ampbasedir"); // Pulls player file path from 'data-ampbasedir' attribute in contentmodules.html template
var options = {
target: divId,
width: ampDimWidth,
height: ampDimHeight,
vars: {id: ampId, resolveJSPath:"true"},
params: {allowScriptAccess: "always", base: ampBaseDir, deepLinking:"false",wmode: "transparent"},
src: [
{type:"html5", src: ampBaseDir+"tcplayer.js", xd: [ampBaseDir+"xd.html"]},
{type:"swf", src: ampBaseDir+"tcplayer.swf",version:"9.0.0"}
]
};
options = $.extend(options);
interact.embedApp(options); // the actual Amplience library call
$(this).removeClass("amplience-module"); // remove the amplienceModule class so this does not get run again for this module later. Must have this.
});
}
这是html,它使用data-XXX属性根据特定Amplience横幅的后端输入的详细信息存储相应的信息。我在这里删除了一些条件值,以便更容易理解。这些是根据输入到后端的值对类别进行的。
<div id="amp-m1-area" class="amplience-module" data-ampid="eba2d785-f2c1-494f-8f92-b3d95dff80f8" data-ampdimwidth="241" data-ampdimheight="241" data-ampbasedir="path/to/amp/directory"></div>
装货单是:
embedAmplienceModules()
功能embedAmplienceModules()
函数调用的全局js文件有关此功能无法加载的任何想法(文档).ready?
**答案** 我删除了'options = $ .extend(options);'线,它工作!
答案 0 :(得分:0)
我删除了&#39; options = $ .extend(options);&#39;线,它工作!