(curEl)
| 651 | |
| 652 | // 添加json路径 |
| 653 | let _showJsonPath = function (curEl) { |
| 654 | let validKeys = _getJsonPathKeys(curEl); |
| 655 | |
| 656 | // 创建或获取语言选择器和路径显示区域 |
| 657 | let jfPathContainer = $('#jsonPathContainer'); |
| 658 | if (!jfPathContainer.length) { |
| 659 | jfPathContainer = $('<div id="jsonPathContainer"/>').prependTo(jfStatusBar); |
| 660 | |
| 661 | // 创建语言选择下拉框 |
| 662 | let langSelector = $('<select id="jsonPathLangSelector" title="选择编程语言格式">' + |
| 663 | '<option value="javascript">JavaScript</option>' + |
| 664 | '<option value="php">PHP</option>' + |
| 665 | '<option value="python">Python</option>' + |
| 666 | '<option value="java">Java</option>' + |
| 667 | '<option value="csharp">C#</option>' + |
| 668 | '<option value="golang">Go</option>' + |
| 669 | '<option value="ruby">Ruby</option>' + |
| 670 | '<option value="swift">Swift</option>' + |
| 671 | '</select>').appendTo(jfPathContainer); |
| 672 | |
| 673 | // 创建路径显示区域 |
| 674 | let jfPath = $('<span id="jsonPath"/>').appendTo(jfPathContainer); |
| 675 | $('<span id="jsonSelectionMeta"/>').appendTo(jfPathContainer); |
| 676 | |
| 677 | // 绑定语言切换事件 |
| 678 | langSelector.on('change', function() { |
| 679 | // 保存选择的语言到本地存储(如果可用) |
| 680 | try { |
| 681 | localStorage.setItem('fehelper_json_path_lang', $(this).val()); |
| 682 | } catch (e) { |
| 683 | // 在沙盒环境中忽略localStorage错误 |
| 684 | console.warn('localStorage不可用,跳过保存语言选择'); |
| 685 | } |
| 686 | // 从容器中获取当前保存的keys,而不是使用闭包中的validKeys |
| 687 | let currentKeys = jfPathContainer.data('currentKeys') || []; |
| 688 | _updateJsonPath(currentKeys, $(this).val()); |
| 689 | }); |
| 690 | |
| 691 | // 从本地存储恢复语言选择(如果可用) |
| 692 | let savedLang = 'javascript'; |
| 693 | try { |
| 694 | savedLang = localStorage.getItem('fehelper_json_path_lang') || 'javascript'; |
| 695 | } catch (e) { |
| 696 | // 在沙盒环境中使用默认值 |
| 697 | console.warn('localStorage不可用,使用默认语言选择'); |
| 698 | } |
| 699 | langSelector.val(savedLang); |
| 700 | } |
| 701 | |
| 702 | // 保存当前的keys到容器的data属性中,供语言切换时使用 |
| 703 | jfPathContainer.data('currentKeys', validKeys); |
| 704 | |
| 705 | // 获取当前选择的语言 |
| 706 | let selectedLang = $('#jsonPathLangSelector').val() || 'javascript'; |
| 707 | _updateJsonPath(validKeys, selectedLang); |
| 708 | _updateStatusBarSelectionInfo(curEl); |
| 709 | }; |
| 710 |
no test coverage detected