带进度条的Joomla安装扩展
我正试图用这个函数制作一个进度条带进度条的Joomla安装扩展,joomla,joomla3.0,Joomla,Joomla3.0,我正试图用这个函数制作一个进度条 public function preflight($route, JAdapterInstance $adapter) { echo '<script> console.log("lol"); </script>'; } 公共功能飞行前($route,jadapternistance$adapter) { 回声' 控制台日志(“lol”); '; }
public function preflight($route, JAdapterInstance $adapter)
{
echo '<script>
console.log("lol");
</script>';
}
公共功能飞行前($route,jadapternistance$adapter)
{
回声'
控制台日志(“lol”);
';
}
通常情况下,预飞行应该在所有类型的动作之前执行,我用die()测试过,这没关系,但当您回送或尝试执行js脚本时,它不是在之前执行,而是在之后执行
我们是否需要更改此进度条?而不是尝试回显您的脚本,而是尝试使用Joomla的
addScriptDeclaration()
方法,如下所示:
public function preflight($route, JAdapterInstance $adapter)
{
$doc = JFactory::getDocument();
$js = '
console.log("lol");
// some more code here
';
$doc->addScriptDeclaration($js);
}
请注意,我没有使用
标记,因为addScriptDeclaration()
会自动为您添加这些标记
希望这有帮助我刚刚经历了飞行后的同样情况,并怀疑可能是同一个问题。对我来说,问题在于Joomla扩展安装是使用AJAX请求完成的。这意味着在飞行后和飞行前执行的任何代码都将在服务器端进行处理,并在完成后将生成的任何HTML插入DOM。因此,任何JavaScript都需要添加到返回的HTML中,并包装在DocumentReady包装器中。尝试添加这个,看看控制台中是否出现了问题
echo "<script>
jQuery(document).ready(function() {
console.log ('lol');
});
</script>";
echo”
jQuery(文档).ready(函数(){
console.log('lol');
});
";
这将确认您的问题是否与我一样与AJAX有关。这只是wtf。当您错误打包或放置die()时,所有内容都会显示在前面,但回显、打印、添加脚本。。。。没什么。我会在晚些时候回家做一些测试。谢谢你的帮助,希望我们能找到一个解决办法:)好的,试了所有没人能用的东西。CDATA关于xml、scriptfile、installfile、windows.load、unload、ready、jquery、buff、flush、echo、print、return…嗨,我已经尝试了所有类似文档就绪、load、unload、window ready等的方法,。。。检测页面是否已加载。。。。