gpt4 book ai didi

javascript - 根据页面中是否定义元素提供备用外部 Javascript 文件

转载 作者:行者123 更新时间:2023-11-30 06:42:14 25 4
gpt4 key购买 nike

好的,我的第一个问题就在这里。

设置:我们使用基于 javascript 的工具对我们的着陆页设计进行 A/B 测试。我需要版本 A(控制)链接到一个外部 javascript 文件,版本 B(变体)链接到另一个 javascript 文件。

目标:在控件底部有一个内部 js 脚本,用于查看该工具实际上是服务于 A 还是 B,如果是,则服务于哪个。结果指示应链接哪个外部脚本。

问题:无论该工具实际上是服务于 A 还是 B,都会先链接原始脚本,然后如果检测到该工具,则会链接相应的脚本。

这是我的代码(我提前为任何新手错误道歉):

//script at bottom of original or tool-served control html page template
<script type="text/javascript">
valForTool = function () {
var variationId = _tool_exp[_tool_exp_ids[0]].combination_chosen;
if (variationId == 1) {
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'js/scripts.js';
document.body.appendChild(newScript);
};
}
originalValidation = function () {
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'js/scripts.js';
document.body.appendChild(newScript);
}
$(function(){
if (typeof _tool_exp_ids !== 'undefined' && typeof _tool_exp_ids[0] !== 'undefined') {
valForTool();
} else {
originalValidation();
};
});
</script>
//end script on control or original template

//script on tool-served variation html template - will run after the above script
<script type="text/javascript">
$(function() {
$('#project_info input[type=submit]').removeAttr('disabled');
$('#project_info').unbind();
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'js/scripts2.js';
document.body.appendChild(newScript);
$('.input_text').parent().addClass('contact_field');
});
</script>
// end script on variation template

关于我做错了什么有什么想法吗?我是否提供了足够的信息?谢谢!我喜欢这个网站作为我的问题的引用,但这是我第一次真正发布问题。

最佳答案

把它缩短一点,看起来你只是这样做:

<script type="text/javascript">
$(function(){
if (typeof _tool_exp_ids !== 'undefined' && typeof _tool_exp_ids[0] !== 'undefined') {
var variationId = _tool_exp[_tool_exp_ids[0]].combination_chosen;
if (variationId == 1) {
$.getScript('js/scripts.js', function() {runSecond();});
}
}else{
$.getScript('js/scripts.js', function() {runSecond();});
}

function runSecond() {
$('#project_info input[type=submit]').removeAttr('disabled').unbind();
$.getScript('js/scripts2.js');
$('.input_text').parent().addClass('contact_field');
}
});
</script>

现在看看,很明显,无论 if/else 语句中满足什么条件,两个脚本都在运行,我真的不明白你想做什么,但我会做的第一件事, 是添加一些 console.logs 以查看这些 if/else 语句是否按预期工作,然后确定应在哪些条件下加载哪些脚本等?

关于javascript - 根据页面中是否定义元素提供备用外部 Javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10199006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com